From 41e1a372ad315f2df885670e6932ff3d70e56a17 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 29 Jul 2023 01:29:37 -0600 Subject: [PATCH 1/6] fix: noImplicitAny --- lib/marked.cjs | 39 +++++++++++++++++++++++---------------- lib/marked.cjs.map | 2 +- lib/marked.d.ts | 10 +++++----- lib/marked.esm.js | 39 +++++++++++++++++++++++---------------- lib/marked.esm.js.map | 2 +- lib/marked.umd.js | 39 +++++++++++++++++++++++---------------- lib/marked.umd.js.map | 2 +- marked.min.js | 4 ++-- src/Instance.ts | 34 +++++++++++++++++++++------------- src/Lexer.ts | 7 +++++-- src/MarkedOptions.ts | 2 +- src/Parser.ts | 18 +++++++++--------- src/Tokenizer.ts | 5 +---- src/Tokens.ts | 5 +++-- src/helpers.ts | 14 ++++++++------ test/types/marked.ts | 4 ++-- tsconfig.json | 1 - 17 files changed, 129 insertions(+), 98 deletions(-) diff --git a/lib/marked.cjs b/lib/marked.cjs index 05fbebecb6..fd1e51b2ff 100644 --- a/lib/marked.cjs +++ b/lib/marked.cjs @@ -610,8 +610,7 @@ var _Tokenizer = class { if (cap) { const item = { type: "table", - // splitCells expects a number as second argument - // @ts-expect-error + raw: cap[0], header: splitCells(cap[1]).map((c) => { return { text: c }; }), @@ -619,7 +618,6 @@ var _Tokenizer = class { rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : [] }; if (item.header.length === item.align.length) { - item.raw = cap[0]; let l = item.align.length; let i, j, k, row; for (i = 0; i < l; i++) { @@ -1174,7 +1172,10 @@ var _Lexer = class { return leading + " ".repeat(tabs.length); }); } - let token, lastToken, cutSrc, lastParagraphClipped; + let token; + let lastToken; + let cutSrc; + let lastParagraphClipped; while (src) { if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => { if (token = extTokenizer.call({ lexer: this }, src, tokens)) { @@ -2024,9 +2025,11 @@ var Marked = class { if (pack.renderer) { const renderer = this.defaults.renderer || new _Renderer(this.defaults); for (const prop in pack.renderer) { - const prevRenderer = renderer[prop]; - renderer[prop] = (...args2) => { - let ret = pack.renderer[prop].apply(renderer, args2); + const rendererFunc = pack.renderer[prop]; + const rendererKey = prop; + const prevRenderer = renderer[rendererKey]; + renderer[rendererKey] = (...args2) => { + let ret = rendererFunc.apply(renderer, args2); if (ret === false) { ret = prevRenderer.apply(renderer, args2); } @@ -2038,9 +2041,11 @@ var Marked = class { if (pack.tokenizer) { const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); for (const prop in pack.tokenizer) { - const prevTokenizer = tokenizer[prop]; - tokenizer[prop] = (...args2) => { - let ret = pack.tokenizer[prop].apply(tokenizer, args2); + const tokenizerFunc = pack.tokenizer[prop]; + const tokenizerKey = prop; + const prevTokenizer = tokenizer[tokenizerKey]; + tokenizer[tokenizerKey] = (...args2) => { + let ret = tokenizerFunc.apply(tokenizer, args2); if (ret === false) { ret = prevTokenizer.apply(tokenizer, args2); } @@ -2052,20 +2057,22 @@ var Marked = class { if (pack.hooks) { const hooks = this.defaults.hooks || new _Hooks(); for (const prop in pack.hooks) { - const prevHook = hooks[prop]; + const hooksFunc = pack.hooks[prop]; + const hooksKey = prop; + const prevHook = hooks[hooksKey]; if (_Hooks.passThroughHooks.has(prop)) { - hooks[prop] = (arg) => { + hooks[hooksKey] = (arg) => { if (this.defaults.async) { - return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then((ret2) => { + return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => { return prevHook.call(hooks, ret2); }); } - const ret = pack.hooks[prop].call(hooks, arg); + const ret = hooksFunc.call(hooks, arg); return prevHook.call(hooks, ret); }; } else { - hooks[prop] = (...args2) => { - let ret = pack.hooks[prop].apply(hooks, args2); + hooks[hooksKey] = (...args2) => { + let ret = hooksFunc.apply(hooks, args2); if (ret === false) { ret = prevHook.apply(hooks, args2); } diff --git a/lib/marked.cjs.map b/lib/marked.cjs.map index 7c5d222706..955bf6b5ea 100644 --- a/lib/marked.cjs.map +++ b/lib/marked.cjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n // splitCells expects a number as second argument\n // @ts-expect-error\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
'\n        + (escaped ? code : escape(code, true))\n        + '
\\n';\n }\n\n return '
'\n      + (escaped ? code : escape(code, true))\n      + '
\\n';\n }\n\n blockquote(quote: string): string {\n return `
\\n${quote}
\\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
\\n' : '
\\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens) as string,\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer) as string),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens)!;\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args: unknown[]) => {\n let ret = pack.renderer![prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args: unknown[]) => {\n let ret = pack.tokenizer![prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[prop as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(pack.hooks![prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks![prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks![prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: any) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension[\"renderer\"]] as Function;\n const rendererKey = prop as keyof _Renderer\n const prevRenderer = renderer[rendererKey] as Function;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension[\"tokenizer\"]] as Function;\n const tokenizerKey = prop as keyof _Tokenizer\n const prevTokenizer = tokenizer[tokenizerKey] as Function;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension[\"hooks\"]] as Function;\n const hooksKey = prop as keyof _Hooks\n const prevHook = hooks[hooksKey] as Function;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,SAAS,eAA8B;AAC5C,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,WAAW;AAAA,IACX,cAAc;AAAA,IACd,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AACF;AAEO,IAAI,YAAY,aAAa;AAE7B,SAAS,eAAe,aAA4B;AACzD,cAAY;AACd;;;AC3BA,IAAM,aAAa;AACnB,IAAM,gBAAgB,IAAI,OAAO,WAAW,QAAQ,GAAG;AACvD,IAAM,qBAAqB;AAC3B,IAAM,wBAAwB,IAAI,OAAO,mBAAmB,QAAQ,GAAG;AACvE,IAAM,qBAAgD;AAAA,EACpD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AACA,IAAM,uBAAuB,CAAC,OAAe,mBAAmB,EAAE;AAE3D,SAAS,OAAO,MAAc,QAAkB;AACrD,MAAI,QAAQ;AACV,QAAI,WAAW,KAAK,IAAI,GAAG;AACzB,aAAO,KAAK,QAAQ,eAAe,oBAAoB;AAAA,IACzD;AAAA,EACF,OAAO;AACL,QAAI,mBAAmB,KAAK,IAAI,GAAG;AACjC,aAAO,KAAK,QAAQ,uBAAuB,oBAAoB;AAAA,IACjE;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,eAAe;AAEd,SAAS,SAAS,MAAc;AAErC,SAAO,KAAK,QAAQ,cAAc,CAAC,GAAG,MAAM;AAC1C,QAAI,EAAE,YAAY;AAClB,QAAI,MAAM;AAAS,aAAO;AAC1B,QAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,aAAO,EAAE,OAAO,CAAC,MAAM,MACnB,OAAO,aAAa,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,IAChD,OAAO,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAAA,IACzC;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,IAAM,QAAQ;AAEP,SAAS,KAAK,OAAa,KAAc;AAC9C,UAAQ,OAAO,UAAU,WAAW,QAAQ,MAAM;AAClD,QAAM,OAAO;AACb,QAAM,MAAM;AAAA,IACV,SAAS,CAAC,MAAuB,QAAyB;AACxD,YAAM,OAAO,QAAQ,YAAY,YAAY,MAAM,IAAI,SAAS;AAChE,YAAM,IAAI,QAAQ,OAAO,IAAI;AAC7B,cAAS,MAAiB,QAAQ,MAAM,GAAG;AAC3C,aAAO;AAAA,IACT;AAAA,IACA,UAAU,MAAM;AACd,aAAO,IAAI,OAAO,OAAO,GAAG;AAAA,IAC9B;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAEtB,SAAS,SAAS,UAA+B,MAAiC,MAAc;AACrG,MAAI,UAAU;AACZ,QAAI;AACJ,QAAI;AACF,aAAO,mBAAmB,SAAS,IAAI,CAAC,EACrC,QAAQ,qBAAqB,EAAE,EAC/B,YAAY;AAAA,IACjB,SAAS,GAAP;AACA,aAAO;AAAA,IACT;AACA,QAAI,KAAK,QAAQ,aAAa,MAAM,KAAK,KAAK,QAAQ,WAAW,MAAM,KAAK,KAAK,QAAQ,OAAO,MAAM,GAAG;AACvG,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,QAAQ,CAAC,qBAAqB,KAAK,IAAI,GAAG;AAC5C,WAAO,WAAW,MAAM,IAAI;AAAA,EAC9B;AACA,MAAI;AACF,WAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG;AAAA,EAC5C,SAAS,GAAP;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAM,WAAmC,CAAC;AAC1C,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,SAAS;AAER,SAAS,WAAW,MAAc,MAAc;AACrD,MAAI,CAAC,SAAS,MAAM,IAAI,GAAG;AAIzB,QAAI,WAAW,KAAK,IAAI,GAAG;AACzB,eAAS,MAAM,IAAI,IAAI,OAAO;AAAA,IAChC,OAAO;AACL,eAAS,MAAM,IAAI,IAAI,MAAM,MAAM,KAAK,IAAI;AAAA,IAC9C;AAAA,EACF;AACA,SAAO,SAAS,MAAM,IAAI;AAC1B,QAAM,eAAe,KAAK,QAAQ,GAAG,MAAM;AAE3C,MAAI,KAAK,UAAU,GAAG,CAAC,MAAM,MAAM;AACjC,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,QAAQ,UAAU,IAAI,IAAI;AAAA,EACxC,WAAW,KAAK,OAAO,CAAC,MAAM,KAAK;AACjC,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,QAAQ,QAAQ,IAAI,IAAI;AAAA,EACtC,OAAO;AACL,WAAO,OAAO;AAAA,EAChB;AACF;AAEO,IAAM,WAAW,EAAE,MAAM,MAAM,KAAK;AAEpC,SAAS,WAAW,UAAkB,OAAa;AAGxD,QAAM,MAAM,SAAS,QAAQ,OAAO,CAAC,OAAO,QAAQ,QAAQ;AACxD,QAAI,UAAU,OACZ,OAAO;AACT,WAAO,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM;AAAM,gBAAU,CAAC;AACrD,QAAI,SAAS;AAGX,aAAO;AAAA,IACT,OAAO;AAEL,aAAO;AAAA,IACT;AAAA,EACF,CAAC,GACD,QAAQ,IAAI,MAAM,KAAK;AACzB,MAAI,IAAI;AAGR,MAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG;AACpB,UAAM,MAAM;AAAA,EACd;AACA,MAAI,MAAM,SAAS,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,GAAG;AACvD,UAAM,IAAI;AAAA,EACZ;AAEA,MAAI,MAAM,SAAS,OAAO;AACxB,UAAM,OAAO,KAAK;AAAA,EACpB,OAAO;AACL,WAAO,MAAM,SAAS;AAAO,YAAM,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO,IAAI,MAAM,QAAQ,KAAK;AAE5B,UAAM,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,SAAS,GAAG;AAAA,EACjD;AACA,SAAO;AACT;AAUO,SAAS,MAAM,KAAa,GAAW,QAAkB;AAC9D,QAAM,IAAI,IAAI;AACd,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACT;AAGA,MAAI,UAAU;AAGd,SAAO,UAAU,GAAG;AAClB,UAAM,WAAW,IAAI,OAAO,IAAI,UAAU,CAAC;AAC3C,QAAI,aAAa,KAAK,CAAC,QAAQ;AAC7B;AAAA,IACF,WAAW,aAAa,KAAK,QAAQ;AACnC;AAAA,IACF,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,MAAM,GAAG,IAAI,OAAO;AACjC;AAEO,SAAS,mBAAmB,KAAa,GAAW;AACzD,MAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,IAAI,IAAI;AACd,MAAI,QAAQ,GACV,IAAI;AACN,SAAO,IAAI,GAAG,KAAK;AACjB,QAAI,IAAI,CAAC,MAAM,MAAM;AACnB;AAAA,IACF,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC1B;AAAA,IACF,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC1B;AACA,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,KAAoB,UAA2B;AAC/E,MAAI,CAAC,OAAO,IAAI,QAAQ;AACtB;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,YAAQ,KAAK,mKAAmK;AAAA,EAClL;AAEA,MAAI,IAAI,YAAY,IAAI,WAAW;AACjC,YAAQ,KAAK,yMAAyM;AAAA,EACxN;AAEA,MAAI,IAAI,aAAa,IAAI,eAAe,aAAa;AACnD,YAAQ,KAAK,qMAAqM;AAAA,EACpN;AAEA,MAAI,IAAI,QAAQ;AACd,YAAQ,KAAK,kPAAkP;AAAA,EACjQ;AAEA,MAAI,IAAI,SAAS;AACf,YAAQ,KAAK,iLAAiL;AAAA,EAChM;AAEA,MAAI,IAAI,aAAa;AACnB,YAAQ,KAAK,wLAAwL;AAAA,EACvM;AAEA,MAAI,IAAI,OAAO;AACb,YAAQ,KAAK,4KAA4K;AAAA,EAC3L;AAEA,MAAI,IAAI,aAAa,IAAI,cAAc;AACrC,YAAQ,KAAK,iRAAiR;AAAA,EAChS;AACF;;;AC5PA,SAAS,WAAW,KAAe,MAA2C,KAAaA,QAA2C;AACpI,QAAM,OAAO,KAAK;AAClB,QAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAChD,QAAM,OAAO,IAAI,CAAC,EAAE,QAAQ,eAAe,IAAI;AAE/C,MAAI,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,KAAK;AAC5B,IAAAA,OAAM,MAAM,SAAS;AACrB,UAAM,QAAqB;AAAA,MACzB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQA,OAAM,aAAa,IAAI;AAAA,IACjC;AACA,IAAAA,OAAM,MAAM,SAAS;AACrB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,OAAO,IAAI;AAAA,EACnB;AACF;AAEA,SAAS,uBAAuB,KAAa,MAAc;AACzD,QAAM,oBAAoB,IAAI,MAAM,eAAe;AAEnD,MAAI,sBAAsB,MAAM;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,kBAAkB,CAAC;AAExC,SAAO,KACJ,MAAM,IAAI,EACV,IAAI,UAAQ;AACX,UAAM,oBAAoB,KAAK,MAAM,MAAM;AAC3C,QAAI,sBAAsB,MAAM;AAC9B,aAAO;AAAA,IACT;AAEA,UAAM,CAAC,YAAY,IAAI;AAEvB,QAAI,aAAa,UAAU,aAAa,QAAQ;AAC9C,aAAO,KAAK,MAAM,aAAa,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,EACT,CAAC,EACA,KAAK,IAAI;AACd;AAKO,IAAM,aAAN,MAAiB;AAAA,EAKtB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAAA,EAC5B;AAAA,EAEA,MAAM,KAAuC;AAC3C,UAAM,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG;AAC7C,QAAI,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG;AAC5B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAsC;AACzC,UAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,YAAM,OAAO,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE;AAC3C,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,gBAAgB;AAAA,QAChB,MAAM,CAAC,KAAK,QAAQ,WAChB,MAAM,MAAM,IAAI,IAChB;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAsC;AAC3C,UAAM,MAAM,KAAK,MAAM,MAAM,OAAO,KAAK,GAAG;AAC5C,QAAI,KAAK;AACP,YAAM,MAAM,IAAI,CAAC;AACjB,YAAM,OAAO,uBAAuB,KAAK,IAAI,CAAC,KAAK,EAAE;AAErD,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI,IAAI,CAAC;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAQ,KAAyC;AAC/C,UAAM,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG;AAC7C,QAAI,KAAK;AACP,UAAI,OAAO,IAAI,CAAC,EAAE,KAAK;AAGvB,UAAI,KAAK,KAAK,IAAI,GAAG;AACnB,cAAM,UAAU,MAAM,MAAM,GAAG;AAC/B,YAAI,KAAK,QAAQ,UAAU;AACzB,iBAAO,QAAQ,KAAK;AAAA,QACtB,WAAW,CAAC,WAAW,KAAK,KAAK,OAAO,GAAG;AAEzC,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,OAAO,IAAI,CAAC,EAAE;AAAA,QACd;AAAA,QACA,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,GAAG,KAAoC;AACrC,UAAM,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK,GAAG;AACxC,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,KAA4C;AACrD,UAAM,MAAM,KAAK,MAAM,MAAM,WAAW,KAAK,GAAG;AAChD,QAAI,KAAK;AACP,YAAM,OAAO,IAAI,CAAC,EAAE,QAAQ,gBAAgB,EAAE;AAC9C,YAAM,MAAM,KAAK,MAAM,MAAM;AAC7B,WAAK,MAAM,MAAM,MAAM;AACvB,YAAM,SAAS,KAAK,MAAM,YAAY,IAAI;AAC1C,WAAK,MAAM,MAAM,MAAM;AACvB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAsC;AACzC,QAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AACxC,QAAI,KAAK;AACP,UAAI,KAAK,QAAQ,WAAW,QAAQ,GAAG,WAAW,mBAChD,MAAM,UAAU,SAAS,cAAc;AAEzC,UAAI,OAAO,IAAI,CAAC,EAAE,KAAK;AACvB,YAAM,YAAY,KAAK,SAAS;AAEhC,YAAM,OAAoB;AAAA,QACxB,MAAM;AAAA,QACN,KAAK;AAAA,QACL,SAAS;AAAA,QACT,OAAO,YAAY,CAAC,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,QACxC,OAAO;AAAA,QACP,OAAO,CAAC;AAAA,MACV;AAEA,aAAO,YAAY,aAAa,KAAK,MAAM,EAAE,MAAM,KAAK;AAExD,UAAI,KAAK,QAAQ,UAAU;AACzB,eAAO,YAAY,OAAO;AAAA,MAC5B;AAGA,YAAM,YAAY,IAAI,OAAO,WAAW,kCAAmC;AAG3E,aAAO,KAAK;AACV,mBAAW;AACX,YAAI,EAAE,MAAM,UAAU,KAAK,GAAG,IAAI;AAChC;AAAA,QACF;AAEA,YAAI,KAAK,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG;AACjC;AAAA,QACF;AAEA,cAAM,IAAI,CAAC;AACX,cAAM,IAAI,UAAU,IAAI,MAAM;AAE9B,eAAO,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,QAAQ,CAAC,MAAc,IAAI,OAAO,IAAI,EAAE,MAAM,CAAC;AACvF,mBAAW,IAAI,MAAM,MAAM,CAAC,EAAE,CAAC;AAE/B,YAAI,KAAK,QAAQ,UAAU;AACzB,mBAAS;AACT,yBAAe,KAAK,SAAS;AAAA,QAC/B,OAAO;AACL,mBAAS,IAAI,CAAC,EAAE,OAAO,MAAM;AAC7B,mBAAS,SAAS,IAAI,IAAI;AAC1B,yBAAe,KAAK,MAAM,MAAM;AAChC,oBAAU,IAAI,CAAC,EAAE;AAAA,QACnB;AAEA,oBAAY;AAEZ,YAAI,CAAC,QAAQ,OAAO,KAAK,QAAQ,GAAG;AAClC,iBAAO,WAAW;AAClB,gBAAM,IAAI,UAAU,SAAS,SAAS,CAAC;AACvC,qBAAW;AAAA,QACb;AAEA,YAAI,CAAC,UAAU;AACb,gBAAM,kBAAkB,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,qDAAsD;AACvH,gBAAM,UAAU,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,qDAAqD;AAC9G,gBAAM,mBAAmB,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,kBAAkB;AACpF,gBAAM,oBAAoB,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,KAAK;AAGxE,iBAAO,KAAK;AACV,sBAAU,IAAI,MAAM,MAAM,CAAC,EAAE,CAAC;AAC9B,uBAAW;AAGX,gBAAI,KAAK,QAAQ,UAAU;AACzB,yBAAW,SAAS,QAAQ,2BAA2B,IAAI;AAAA,YAC7D;AAGA,gBAAI,iBAAiB,KAAK,QAAQ,GAAG;AACnC;AAAA,YACF;AAGA,gBAAI,kBAAkB,KAAK,QAAQ,GAAG;AACpC;AAAA,YACF;AAGA,gBAAI,gBAAgB,KAAK,QAAQ,GAAG;AAClC;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,GAAG,GAAG;AACrB;AAAA,YACF;AAEA,gBAAI,SAAS,OAAO,MAAM,KAAK,UAAU,CAAC,SAAS,KAAK,GAAG;AACzD,8BAAgB,OAAO,SAAS,MAAM,MAAM;AAAA,YAC9C,OAAO;AAEL,kBAAI,WAAW;AACb;AAAA,cACF;AAGA,kBAAI,KAAK,OAAO,MAAM,KAAK,GAAG;AAC5B;AAAA,cACF;AACA,kBAAI,iBAAiB,KAAK,IAAI,GAAG;AAC/B;AAAA,cACF;AACA,kBAAI,kBAAkB,KAAK,IAAI,GAAG;AAChC;AAAA,cACF;AACA,kBAAI,QAAQ,KAAK,IAAI,GAAG;AACtB;AAAA,cACF;AAEA,8BAAgB,OAAO;AAAA,YACzB;AAEA,gBAAI,CAAC,aAAa,CAAC,SAAS,KAAK,GAAG;AAClC,0BAAY;AAAA,YACd;AAEA,mBAAO,UAAU;AACjB,kBAAM,IAAI,UAAU,QAAQ,SAAS,CAAC;AACtC,mBAAO,SAAS,MAAM,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,OAAO;AAEf,cAAI,mBAAmB;AACrB,iBAAK,QAAQ;AAAA,UACf,WAAW,YAAY,KAAK,GAAG,GAAG;AAChC,gCAAoB;AAAA,UACtB;AAAA,QACF;AAGA,YAAI,KAAK,QAAQ,KAAK;AACpB,mBAAS,cAAc,KAAK,YAAY;AACxC,cAAI,QAAQ;AACV,wBAAY,OAAO,CAAC,MAAM;AAC1B,2BAAe,aAAa,QAAQ,gBAAgB,EAAE;AAAA,UACxD;AAAA,QACF;AAEA,aAAK,MAAM,KAAK;AAAA,UACd,MAAM;AAAA,UACN;AAAA,UACA,MAAM,CAAC,CAAC;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA,QACR,CAAC;AAED,aAAK,OAAO;AAAA,MACd;AAGA,WAAK,MAAM,KAAK,MAAM,SAAS,CAAC,EAAE,MAAM,IAAI,UAAU;AACtD,MAAC,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC,EAAsB,OAAO,aAAa,UAAU;AACrF,WAAK,MAAM,KAAK,IAAI,UAAU;AAE9B,YAAM,IAAI,KAAK,MAAM;AAGrB,WAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,aAAK,MAAM,MAAM,MAAM;AACvB,aAAK,MAAM,CAAC,EAAE,SAAS,KAAK,MAAM,YAAY,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpE,YAAI,CAAC,KAAK,OAAO;AAEf,gBAAM,UAAU,KAAK,MAAM,CAAC,EAAE,OAAQ,OAAO,OAAK,EAAE,SAAS,OAAO;AACpE,gBAAM,wBAAwB,QAAQ,SAAS,KAAK,QAAQ,KAAK,OAAK,SAAS,KAAK,EAAE,GAAI,CAAC;AAE3F,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAGA,UAAI,KAAK,OAAO;AACd,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAK,MAAM,CAAC,EAAE,QAAQ;AAAA,QACxB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,KAAK,KAAyD;AAC5D,UAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,YAAM,QAAwC;AAAA,QAC5C,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK,IAAI,CAAC;AAAA,QACV,KAAK,CAAC,KAAK,QAAQ,cACb,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM;AAAA,QAC5D,MAAM,IAAI,CAAC;AAAA,MACb;AACA,UAAI,KAAK,QAAQ,UAAU;AACzB,cAAM,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;AACpF,cAAM,YAAY;AAClB,kBAAU,OAAO;AACjB,kBAAU,OAAO;AACjB,kBAAU,SAAS,KAAK,MAAM,OAAO,IAAI;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,IAAI,KAAqC;AACvC,UAAM,MAAM,KAAK,MAAM,MAAM,IAAI,KAAK,GAAG;AACzC,QAAI,KAAK;AACP,YAAM,MAAM,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,QAAQ,GAAG;AACpD,YAAM,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,YAAY,IAAI,EAAE,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AACnG,YAAM,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI,IAAI,CAAC;AAC/G,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,KAAuC;AAC3C,UAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,YAAM,OAAqB;AAAA,QACzB,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,QAAQ,WAAW,IAAI,CAAC,CAAC,EAAE,IAAI,OAAK;AAClC,iBAAO,EAAE,MAAM,EAAE;AAAA,QACnB,CAAC;AAAA,QACD,OAAO,IAAI,CAAC,EAAE,QAAQ,cAAc,EAAE,EAAE,MAAM,QAAQ;AAAA,QACtD,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC;AAAA,MACjF;AAEA,UAAI,KAAK,OAAO,WAAW,KAAK,MAAM,QAAQ;AAC5C,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI,GAAG,GAAG,GAAG;AACb,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAI,YAAY,KAAK,KAAK,MAAM,CAAC,CAAE,GAAG;AACpC,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB,WAAW,aAAa,KAAK,KAAK,MAAM,CAAC,CAAE,GAAG;AAC5C,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB,WAAW,YAAY,KAAK,KAAK,MAAM,CAAC,CAAE,GAAG;AAC3C,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB,OAAO;AACL,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB;AAAA,QACF;AAEA,YAAI,KAAK,KAAK;AACd,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAK,KAAK,CAAC,IAAI,WAAW,KAAK,KAAK,CAAC,GAAwB,KAAK,OAAO,MAAM,EAAE,IAAI,OAAK;AACxF,mBAAO,EAAE,MAAM,EAAE;AAAA,UACnB,CAAC;AAAA,QACH;AAKA,YAAI,KAAK,OAAO;AAChB,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAK,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,OAAO,KAAK,OAAO,CAAC,EAAE,IAAI;AAAA,QAC/D;AAGA,YAAI,KAAK,KAAK;AACd,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,gBAAM,KAAK,KAAK,CAAC;AACjB,eAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,gBAAI,CAAC,EAAE,SAAS,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,IAAI;AAAA,UAC/C;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,KAAyC;AAChD,UAAM,MAAM,KAAK,MAAM,MAAM,SAAS,KAAK,GAAG;AAC9C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI;AAAA,QACtC,MAAM,IAAI,CAAC;AAAA,QACX,QAAQ,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,KAA2C;AACnD,UAAM,MAAM,KAAK,MAAM,MAAM,UAAU,KAAK,GAAG;AAC/C,QAAI,KAAK;AACP,YAAM,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,OAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAClB,IAAI,CAAC;AACT,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAsC;AACzC,UAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,MAAM,IAAI,CAAC;AAAA,QACX,QAAQ,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAwC;AAC7C,UAAM,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG;AAC7C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAqC;AACvC,UAAM,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,UAAI,CAAC,KAAK,MAAM,MAAM,UAAU,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG;AACpD,aAAK,MAAM,MAAM,SAAS;AAAA,MAC5B,WAAW,KAAK,MAAM,MAAM,UAAU,UAAU,KAAK,IAAI,CAAC,CAAC,GAAG;AAC5D,aAAK,MAAM,MAAM,SAAS;AAAA,MAC5B;AACA,UAAI,CAAC,KAAK,MAAM,MAAM,cAAc,iCAAiC,KAAK,IAAI,CAAC,CAAC,GAAG;AACjF,aAAK,MAAM,MAAM,aAAa;AAAA,MAChC,WAAW,KAAK,MAAM,MAAM,cAAc,mCAAmC,KAAK,IAAI,CAAC,CAAC,GAAG;AACzF,aAAK,MAAM,MAAM,aAAa;AAAA,MAChC;AAEA,aAAO;AAAA,QACL,MAAM,KAAK,QAAQ,WACf,SACA;AAAA,QACJ,KAAK,IAAI,CAAC;AAAA,QACV,QAAQ,KAAK,MAAM,MAAM;AAAA,QACzB,YAAY,KAAK,MAAM,MAAM;AAAA,QAC7B,OAAO;AAAA,QACP,MAAM,KAAK,QAAQ,WACd,KAAK,QAAQ,YACZ,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAC7B,OAAO,IAAI,CAAC,CAAC,IACf,IAAI,CAAC;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAqD;AACxD,UAAM,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,YAAM,aAAa,IAAI,CAAC,EAAE,KAAK;AAC/B,UAAI,CAAC,KAAK,QAAQ,YAAY,KAAK,KAAK,UAAU,GAAG;AAEnD,YAAI,CAAE,KAAK,KAAK,UAAU,GAAI;AAC5B;AAAA,QACF;AAGA,cAAM,aAAa,MAAM,WAAW,MAAM,GAAG,EAAE,GAAG,IAAI;AACtD,aAAK,WAAW,SAAS,WAAW,UAAU,MAAM,GAAG;AACrD;AAAA,QACF;AAAA,MACF,OAAO;AAEL,cAAM,iBAAiB,mBAAmB,IAAI,CAAC,GAAG,IAAI;AACtD,YAAI,iBAAiB,IAAI;AACvB,gBAAM,QAAQ,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI,IAAI;AAC9C,gBAAM,UAAU,QAAQ,IAAI,CAAC,EAAE,SAAS;AACxC,cAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc;AAC3C,cAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,KAAK;AAC3C,cAAI,CAAC,IAAI;AAAA,QACX;AAAA,MACF;AACA,UAAI,OAAO,IAAI,CAAC;AAChB,UAAI,QAAQ;AACZ,UAAI,KAAK,QAAQ,UAAU;AAEzB,cAAM,OAAO,gCAAgC,KAAK,IAAI;AAEtD,YAAI,MAAM;AACR,iBAAO,KAAK,CAAC;AACb,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,MACF,OAAO;AACL,gBAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,MACzC;AAEA,aAAO,KAAK,KAAK;AACjB,UAAI,KAAK,KAAK,IAAI,GAAG;AACnB,YAAI,KAAK,QAAQ,YAAY,CAAE,KAAK,KAAK,UAAU,GAAI;AAErD,iBAAO,KAAK,MAAM,CAAC;AAAA,QACrB,OAAO;AACL,iBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,QACzB;AAAA,MACF;AACA,aAAO,WAAW,KAAK;AAAA,QACrB,MAAM,OAAO,KAAK,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AAAA,QAC9D,OAAO,QAAQ,MAAM,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AAAA,MACnE,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,QAAQ,KAAa,OAAoE;AACvF,QAAI;AACJ,SAAK,MAAM,KAAK,MAAM,OAAO,QAAQ,KAAK,GAAG,OACvC,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG,IAAI;AAC/C,UAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,QAAQ,QAAQ,GAAG;AACjD,aAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,UAAI,CAAC,MAAM;AACT,cAAM,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC;AAC5B,eAAO;AAAA,UACL,MAAM;AAAA,UACN,KAAK;AAAA,UACL;AAAA,QACF;AAAA,MACF;AACA,aAAO,WAAW,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,KAAK;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,SAAS,KAAa,WAAmB,WAAW,IAA2C;AAC7F,QAAI,QAAQ,KAAK,MAAM,OAAO,SAAS,OAAO,KAAK,GAAG;AACtD,QAAI,CAAC;AAAO;AAGZ,QAAI,MAAM,CAAC,KAAK,SAAS,MAAM,eAAe;AAAG;AAEjD,UAAM,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK;AAEzC,QAAI,CAAC,YAAY,CAAC,YAAY,KAAK,MAAM,OAAO,YAAY,KAAK,QAAQ,GAAG;AAC1E,YAAM,UAAU,MAAM,CAAC,EAAE,SAAS;AAClC,UAAI,QAAQ,SAAS,aAAa,SAAS,gBAAgB;AAE3D,YAAM,SAAS,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,KAAK,MAAM,OAAO,SAAS,YAAY,KAAK,MAAM,OAAO,SAAS;AACvG,aAAO,YAAY;AAGnB,kBAAY,UAAU,MAAM,KAAK,IAAI,SAAS,OAAO;AAErD,cAAQ,QAAQ,OAAO,KAAK,SAAS,MAAM,MAAM;AAC/C,iBAAS,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC;AAE5E,YAAI,CAAC;AAAQ;AAEb,kBAAU,OAAO;AAEjB,YAAI,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AACxB,wBAAc;AACd;AAAA,QACF,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AAC/B,cAAI,UAAU,KAAK,GAAG,UAAU,WAAW,IAAI;AAC7C,6BAAiB;AACjB;AAAA,UACF;AAAA,QACF;AAEA,sBAAc;AAEd,YAAI,aAAa;AAAG;AAGpB,kBAAU,KAAK,IAAI,SAAS,UAAU,aAAa,aAAa;AAEhE,cAAM,MAAM,IAAI,MAAM,GAAG,UAAU,MAAM,QAAQ,UAAU,CAAC;AAG5D,YAAI,KAAK,IAAI,SAAS,OAAO,IAAI,GAAG;AAClC,gBAAMC,QAAO,IAAI,MAAM,GAAG,EAAE;AAC5B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA,MAAAA;AAAA,YACA,QAAQ,KAAK,MAAM,aAAaA,KAAI;AAAA,UACtC;AAAA,QACF;AAGA,cAAM,OAAO,IAAI,MAAM,GAAG,EAAE;AAC5B,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,QAAQ,KAAK,MAAM,aAAa,IAAI;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,KAA0C;AACjD,UAAM,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,UAAI,OAAO,IAAI,CAAC,EAAE,QAAQ,OAAO,GAAG;AACpC,YAAM,mBAAmB,OAAO,KAAK,IAAI;AACzC,YAAM,0BAA0B,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI;AACjE,UAAI,oBAAoB,yBAAyB;AAC/C,eAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,MAC1C;AACA,aAAO,OAAO,MAAM,IAAI;AACxB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,GAAG,KAAoC;AACrC,UAAM,MAAM,KAAK,MAAM,OAAO,GAAG,KAAK,GAAG;AACzC,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAqC;AACvC,UAAM,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,MAAM,IAAI,CAAC;AAAA,QACX,QAAQ,KAAK,MAAM,aAAa,IAAI,CAAC,CAAC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,KAAaC,SAA0D;AAC9E,UAAM,MAAM,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;AAC/C,QAAI,KAAK;AACP,UAAI,MAAM;AACV,UAAI,IAAI,CAAC,MAAM,KAAK;AAClB,eAAO,OAAO,KAAK,QAAQ,SAASA,QAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3D,eAAO,YAAY;AAAA,MACrB,OAAO;AACL,eAAO,OAAO,IAAI,CAAC,CAAC;AACpB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,KAAK;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAaA,SAA0D;AACzE,QAAI;AACJ,QAAI,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG,GAAG;AACzC,UAAI,MAAM;AACV,UAAI,IAAI,CAAC,MAAM,KAAK;AAClB,eAAO,OAAO,KAAK,QAAQ,SAASA,QAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3D,eAAO,YAAY;AAAA,MACrB,OAAO;AAEL,YAAI;AACJ,WAAG;AACD,wBAAc,IAAI,CAAC;AACnB,cAAI,CAAC,IAAI,KAAK,MAAM,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;AAAA,QACtD,SAAS,gBAAgB,IAAI,CAAC;AAC9B,eAAO,OAAO,IAAI,CAAC,CAAC;AACpB,YAAI,IAAI,CAAC,MAAM,QAAQ;AACrB,iBAAO,YAAY,IAAI,CAAC;AAAA,QAC1B,OAAO;AACL,iBAAO,IAAI,CAAC;AAAA,QACd;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,KAAK;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,KAAaC,cAA+D;AACrF,UAAM,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,UAAI;AACJ,UAAI,KAAK,MAAM,MAAM,YAAY;AAC/B,eAAO,KAAK,QAAQ,WAAY,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAK,IAAI,CAAC;AAAA,MACnH,OAAO;AACL,eAAO,OAAO,KAAK,QAAQ,cAAcA,aAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,MACvE;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACjuBO,IAAM,QAAiF;AAAA,EAC5F,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,MAAM;AAAA,EAUN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AAAA;AAAA;AAAA,EAGV,YAAY;AAAA,EACZ,MAAM;AACR;AAEA,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,MAAM,KAAK,MAAM,GAAG,EACvB,QAAQ,SAAS,MAAM,MAAM,EAC7B,QAAQ,SAAS,MAAM,MAAM,EAC7B,SAAS;AAEZ,MAAM,SAAS;AACf,MAAM,gBAAgB,KAAK,eAAe,EACvC,QAAQ,QAAQ,MAAM,MAAM,EAC5B,SAAS;AAEZ,MAAM,OAAO,KAAK,MAAM,IAAI,EACzB,QAAQ,SAAS,MAAM,MAAM,EAC7B,QAAQ,MAAM,iEAAiE,EAC/E,QAAQ,OAAO,YAAY,MAAM,IAAI,SAAS,GAAG,EACjD,SAAS;AAEZ,MAAM,OAAO;AAMb,MAAM,WAAW;AACjB,MAAM,OAAO,KAAK,MAAM,MAAM,GAAG,EAC9B,QAAQ,WAAW,MAAM,QAAQ,EACjC,QAAQ,OAAO,MAAM,IAAI,EACzB,QAAQ,aAAa,0EAA0E,EAC/F,SAAS;AAEZ,MAAM,WAAW,KAAK,MAAM,QAAQ,EACjC,QAAQ,SAAS,MAAM,MAAM,EAC7B,SAAS;AAEZ,MAAM,YAAY,KAAK,MAAM,UAAU,EACpC,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,eAAe,EAClC,QAAQ,aAAa,EAAE,EACvB,QAAQ,UAAU,EAAE,EACpB,QAAQ,cAAc,SAAS,EAC/B,QAAQ,UAAU,gDAAgD,EAClE,QAAQ,QAAQ,wBAAwB,EACxC,QAAQ,QAAQ,6DAA6D,EAC7E,QAAQ,OAAO,MAAM,IAAI,EACzB,SAAS;AAEZ,MAAM,aAAa,KAAK,MAAM,UAAU,EACrC,QAAQ,aAAa,MAAM,SAAS,EACpC,SAAS;AAMZ,MAAM,SAAS,EAAE,GAAG,MAAM;AAM1B,MAAM,MAAM;AAAA,EACV,GAAG,MAAM;AAAA,EACT,OAAO;AAAA;AAGT;AAEA,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,KAAa,EAC3C,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,eAAe,EAClC,QAAQ,cAAc,SAAS,EAC/B,QAAQ,QAAQ,YAAY,EAC5B,QAAQ,UAAU,gDAAgD,EAClE,QAAQ,QAAQ,wBAAwB,EACxC,QAAQ,QAAQ,6DAA6D,EAC7E,QAAQ,OAAO,MAAM,IAAI,EACzB,SAAS;AAEZ,MAAM,IAAI,YAAY,KAAK,MAAM,UAAU,EACxC,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,eAAe,EAClC,QAAQ,aAAa,EAAE,EACvB,QAAQ,SAAS,MAAM,IAAI,KAAe,EAC1C,QAAQ,cAAc,SAAS,EAC/B,QAAQ,UAAU,gDAAgD,EAClE,QAAQ,QAAQ,wBAAwB,EACxC,QAAQ,QAAQ,6DAA6D,EAC7E,QAAQ,OAAO,MAAM,IAAI,EACzB,SAAS;AAKZ,MAAM,WAAW;AAAA,EACf,GAAG,MAAM;AAAA,EACT,MAAM;AAAA,IACJ;AAAA,EAEwE,EACvE,QAAQ,WAAW,MAAM,QAAQ,EACjC,QAAQ,QAAQ,mKAGkB,EAClC,SAAS;AAAA,EACZ,KAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EACR,UAAU;AAAA,EACV,WAAW,KAAK,MAAM,OAAO,UAAkB,EAC5C,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,iBAAiB,EACpC,QAAQ,YAAY,MAAM,QAAQ,EAClC,QAAQ,cAAc,SAAS,EAC/B,QAAQ,WAAW,EAAE,EACrB,QAAQ,SAAS,EAAE,EACnB,QAAQ,SAAS,EAAE,EACnB,SAAS;AACd;AAOO,IAAM,SAAoF;AAAA,EAC/F,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,KAAK;AAAA,EACL,KAAK;AAAA;AAAA,EAML,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,UAAU;AAAA,IACR,QAAQ;AAAA;AAAA;AAAA,IAGR,WAAW;AAAA,IACX,WAAW;AAAA;AAAA,EACb;AAAA,EACA,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,MAAM;AAAA,EACN,aAAa;AACf;AAGA,OAAO,eAAe;AACtB,OAAO,cAAc,KAAK,OAAO,aAAa,GAAG,EAAE,QAAQ,gBAAgB,OAAO,YAAY,EAAE,SAAS;AAGzG,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,WAAW;AAElB,OAAO,WAAW,KAAK,MAAM,QAAQ,EAAE,QAAQ,aAAa,KAAK,EAAE,SAAS;AAE5E,OAAO,SAAS,SAAS,KAAK,OAAO,SAAS,QAAgB,GAAG,EAC9D,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,SAAS,YAAY,KAAK,OAAO,SAAS,WAAmB,IAAI,EACrE,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,SAAS,YAAY,KAAK,OAAO,SAAS,WAAmB,IAAI,EACrE,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,iBAAiB,KAAK,OAAO,gBAAwB,IAAI,EAC7D,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,WAAW,KAAK,OAAO,UAAU,IAAI,EACzC,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,WAAW,KAAK,OAAO,QAAQ,EACnC,QAAQ,UAAU,OAAO,OAAO,EAChC,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AAEZ,OAAO,aAAa;AAEpB,OAAO,MAAM,KAAK,OAAO,GAAG,EACzB,QAAQ,WAAW,OAAO,QAAQ,EAClC,QAAQ,aAAa,OAAO,UAAU,EACtC,SAAS;AAEZ,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,SAAS;AAEhB,OAAO,OAAO,KAAK,OAAO,IAAI,EAC3B,QAAQ,SAAS,OAAO,MAAM,EAC9B,QAAQ,QAAQ,OAAO,KAAK,EAC5B,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AAEZ,OAAO,UAAU,KAAK,OAAO,OAAO,EACjC,QAAQ,SAAS,OAAO,MAAM,EAC9B,QAAQ,OAAO,MAAM,MAAM,EAC3B,SAAS;AAEZ,OAAO,SAAS,KAAK,OAAO,MAAM,EAC/B,QAAQ,OAAO,MAAM,MAAM,EAC3B,SAAS;AAEZ,OAAO,gBAAgB,KAAK,OAAO,eAAe,GAAG,EAClD,QAAQ,WAAW,OAAO,OAAO,EACjC,QAAQ,UAAU,OAAO,MAAM,EAC/B,SAAS;AAMZ,OAAO,SAAS,EAAE,GAAG,OAAO;AAM5B,OAAO,WAAW;AAAA,EAChB,GAAG,OAAO;AAAA,EACV,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,IAAI;AAAA,IACF,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,MAAM,KAAK,yBAAyB,EACjC,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AAAA,EACZ,SAAS,KAAK,+BAA+B,EAC1C,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AACd;AAMA,OAAO,MAAM;AAAA,EACX,GAAG,OAAO;AAAA,EACV,QAAQ,KAAK,OAAO,MAAM,EAAE,QAAQ,MAAM,MAAM,EAAE,SAAS;AAAA,EAC3D,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,MAAM;AACR;AAEA,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,KAAa,GAAG,EAC9C,QAAQ,SAAS,OAAO,IAAI,eAAyB,EACrD,SAAS;AAKZ,OAAO,SAAS;AAAA,EACd,GAAG,OAAO;AAAA,EACV,IAAI,KAAK,OAAO,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,SAAS;AAAA,EAClD,MAAM,KAAK,OAAO,IAAI,IAAY,EAC/B,QAAQ,QAAQ,eAAe,EAC/B,QAAQ,WAAW,GAAG,EACtB,SAAS;AACd;;;ACjXA,SAAS,YAAY,MAAc;AACjC,SAAO,KAEJ,QAAQ,QAAQ,QAAQ,EAExB,QAAQ,OAAO,QAAQ,EAEvB,QAAQ,2BAA2B,UAAU,EAE7C,QAAQ,MAAM,QAAQ,EAEtB,QAAQ,gCAAgC,UAAU,EAElD,QAAQ,MAAM,QAAQ,EAEtB,QAAQ,UAAU,QAAQ;AAC/B;AAKA,SAAS,OAAO,MAAc;AAC5B,MAAI,MAAM,IACR,GACA;AAEF,QAAM,IAAI,KAAK;AACf,OAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,SAAK,KAAK,WAAW,CAAC;AACtB,QAAI,KAAK,OAAO,IAAI,KAAK;AACvB,WAAK,MAAM,GAAG,SAAS,EAAE;AAAA,IAC3B;AACA,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO;AACT;AAKO,IAAM,SAAN,MAAa;AAAA,EAYlB,YAAYC,UAAyB;AAGnC,SAAK,SAAS,CAAC;AACf,SAAK,OAAO,QAAQ,uBAAO,OAAO,IAAI;AACtC,SAAK,UAAUA,YAAW;AAC1B,SAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,IAAI,WAAW;AAClE,SAAK,YAAY,KAAK,QAAQ;AAC9B,SAAK,UAAU,UAAU,KAAK;AAC9B,SAAK,UAAU,QAAQ;AACvB,SAAK,cAAc,CAAC;AACpB,SAAK,QAAQ;AAAA,MACX,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,KAAK;AAAA,IACP;AAEA,UAAM,QAAQ;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,QAAQ,OAAO;AAAA,IACjB;AAEA,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,QAAQ,MAAM;AACpB,YAAM,SAAS,OAAO;AAAA,IACxB,WAAW,KAAK,QAAQ,KAAK;AAC3B,YAAM,QAAQ,MAAM;AACpB,UAAI,KAAK,QAAQ,QAAQ;AACvB,cAAM,SAAS,OAAO;AAAA,MACxB,OAAO;AACL,cAAM,SAAS,OAAO;AAAA,MACxB;AAAA,IACF;AACA,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,QAAe;AACxB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,IAAI,KAAaA,UAAyB;AAC/C,UAAMC,SAAQ,IAAI,OAAOD,QAAO;AAChC,WAAOC,OAAM,IAAI,GAAG;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,UAAU,KAAaD,UAAyB;AACrD,UAAMC,SAAQ,IAAI,OAAOD,QAAO;AAChC,WAAOC,OAAM,aAAa,GAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAa;AACf,UAAM,IACH,QAAQ,YAAY,IAAI;AAE3B,SAAK,YAAY,KAAK,KAAK,MAAM;AAEjC,QAAI;AACJ,WAAO,OAAO,KAAK,YAAY,MAAM,GAAG;AACtC,WAAK,aAAa,KAAK,KAAK,KAAK,MAAM;AAAA,IACzC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAOA,YAAY,KAAa,SAAkB,CAAC,GAAG;AAC7C,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,UAAU,EAAE;AAAA,IACvD,OAAO;AACL,YAAM,IAAI,QAAQ,gBAAgB,CAAC,GAAG,SAAS,SAAS;AACtD,eAAO,UAAU,OAAO,OAAO,KAAK,MAAM;AAAA,MAC5C,CAAC;AAAA,IACH;AAEA,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,WAAO,KAAK;AACV,UAAI,KAAK,QAAQ,cACZ,KAAK,QAAQ,WAAW,SACxB,KAAK,QAAQ,WAAW,MAAM,KAAK,CAAC,iBAAkD;AACvF,YAAI,QAAQ,aAAa,KAAK,EAAE,OAAO,KAAK,GAAG,KAAK,MAAM,GAAG;AAC3D,gBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,iBAAO,KAAK,KAAK;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC,GAAG;AACJ;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,MAAM,GAAG,GAAG;AACrC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,YAAI,MAAM,IAAI,WAAW,KAAK,OAAO,SAAS,GAAG;AAG/C,iBAAO,OAAO,SAAS,CAAC,EAAE,OAAO;AAAA,QACnC,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,YAAI,cAAc,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS;AAC9E,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,OAAO,GAAG,GAAG;AACtC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,QAAQ,GAAG,GAAG;AACvC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,GAAG,GAAG,GAAG;AAClC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,WAAW,GAAG,GAAG;AAC1C,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,cAAc,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS;AAC9E,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,WAAW,CAAC,KAAK,OAAO,MAAM,MAAM,GAAG,GAAG;AACxC,eAAK,OAAO,MAAM,MAAM,GAAG,IAAI;AAAA,YAC7B,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,UACf;AAAA,QACF;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,MAAM,GAAG,GAAG;AACrC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,GAAG,GAAG;AACxC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAIA,eAAS;AACT,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,YAAY;AACjE,YAAI,aAAa;AACjB,cAAM,UAAU,IAAI,MAAM,CAAC;AAC3B,YAAI;AACJ,aAAK,QAAQ,WAAW,WAAW,QAAQ,CAAC,kBAAkB;AAC5D,sBAAY,cAAc,KAAK,EAAE,OAAO,KAAK,GAAG,OAAO;AACvD,cAAI,OAAO,cAAc,YAAY,aAAa,GAAG;AAAE,yBAAa,KAAK,IAAI,YAAY,SAAS;AAAA,UAAG;AAAA,QACvG,CAAC;AACD,YAAI,aAAa,YAAY,cAAc,GAAG;AAC5C,mBAAS,IAAI,UAAU,GAAG,aAAa,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,UAAI,KAAK,MAAM,QAAQ,QAAQ,KAAK,UAAU,UAAU,MAAM,IAAI;AAChE,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,wBAAwB,UAAU,SAAS,aAAa;AAC1D,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,IAAI;AACrB,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA,+BAAwB,OAAO,WAAW,IAAI;AAC9C,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,UAAU,SAAS,QAAQ;AAC1C,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,IAAI;AACrB,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAEA,UAAI,KAAK;AACP,cAAM,SAAS,4BAA4B,IAAI,WAAW,CAAC;AAC3D,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,MAAM,MAAM;AACpB;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,MAAM,MAAM;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAEA,SAAK,MAAM,MAAM;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAa,SAAkB,CAAC,GAAG;AACxC,SAAK,YAAY,KAAK,EAAE,KAAK,OAAO,CAAC;AACrC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,KAAa,SAAkB,CAAC,GAAY;AACvD,QAAI,OAAO,WAAW;AAGtB,QAAI,YAAY;AAChB,QAAI;AACJ,QAAI,cAAc;AAGlB,QAAI,KAAK,OAAO,OAAO;AACrB,YAAM,QAAQ,OAAO,KAAK,KAAK,OAAO,KAAK;AAC3C,UAAI,MAAM,SAAS,GAAG;AACpB,gBAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,cAAc,KAAK,SAAS,MAAM,MAAM;AAClF,cAAI,MAAM,SAAS,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG;AACrE,wBAAY,UAAU,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,SAAS;AAAA,UACjK;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,UAAU,KAAK,SAAS,MAAM,MAAM;AAC9E,kBAAY,UAAU,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,SAAS;AAAA,IAC7J;AAGA,YAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,eAAe,KAAK,SAAS,MAAM,MAAM;AACnF,kBAAY,UAAU,MAAM,GAAG,MAAM,KAAK,IAAI,OAAO,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,eAAe,SAAS;AAAA,IAC3H;AAEA,WAAO,KAAK;AACV,UAAI,CAAC,cAAc;AACjB,mBAAW;AAAA,MACb;AACA,qBAAe;AAGf,UAAI,KAAK,QAAQ,cACZ,KAAK,QAAQ,WAAW,UACxB,KAAK,QAAQ,WAAW,OAAO,KAAK,CAAC,iBAAiB;AACvD,YAAI,QAAQ,aAAa,KAAK,EAAE,OAAO,KAAK,GAAG,KAAK,MAAM,GAAG;AAC3D,gBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,iBAAO,KAAK,KAAK;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC,GAAG;AACJ;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,OAAO,GAAG,GAAG;AACtC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,MAAM,SAAS,UAAU,UAAU,SAAS,QAAQ;AACnE,oBAAU,OAAO,MAAM;AACvB,oBAAU,QAAQ,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,QAAQ,KAAK,KAAK,OAAO,KAAK,GAAG;AAC1D,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,MAAM,SAAS,UAAU,UAAU,SAAS,QAAQ;AACnE,oBAAU,OAAO,MAAM;AACvB,oBAAU,QAAQ,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,KAAK,WAAW,QAAQ,GAAG;AAC7D,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,GAAG,GAAG;AACxC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,GAAG,GAAG,GAAG;AAClC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,KAAK,MAAM,GAAG;AAChD,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,CAAC,KAAK,MAAM,WAAW,QAAQ,KAAK,UAAU,IAAI,KAAK,MAAM,IAAI;AACnE,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAIA,eAAS;AACT,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa;AAClE,YAAI,aAAa;AACjB,cAAM,UAAU,IAAI,MAAM,CAAC;AAC3B,YAAI;AACJ,aAAK,QAAQ,WAAW,YAAY,QAAQ,CAAC,kBAAkB;AAC7D,sBAAY,cAAc,KAAK,EAAE,OAAO,KAAK,GAAG,OAAO;AACvD,cAAI,OAAO,cAAc,YAAY,aAAa,GAAG;AAAE,yBAAa,KAAK,IAAI,YAAY,SAAS;AAAA,UAAG;AAAA,QACvG,CAAC;AACD,YAAI,aAAa,YAAY,cAAc,GAAG;AAC5C,mBAAS,IAAI,UAAU,GAAG,aAAa,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,UAAI,QAAQ,KAAK,UAAU,WAAW,QAAQ,WAAW,GAAG;AAC1D,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,YAAI,MAAM,IAAI,MAAM,EAAE,MAAM,KAAK;AAC/B,qBAAW,MAAM,IAAI,MAAM,EAAE;AAAA,QAC/B;AACA,uBAAe;AACf,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,UAAU,SAAS,QAAQ;AAC1C,oBAAU,OAAO,MAAM;AACvB,oBAAU,QAAQ,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAEA,UAAI,KAAK;AACP,cAAM,SAAS,4BAA4B,IAAI,WAAW,CAAC;AAC3D,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,MAAM,MAAM;AACpB;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,MAAM,MAAM;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;;;AC5fO,IAAM,YAAN,MAAgB;AAAA,EAErB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAAA,EAC5B;AAAA,EAEA,KAAK,MAAc,YAAgC,SAA0B;AAC3E,UAAM,QAAQ,cAAc,IAAI,MAAM,KAAK,EAAG,CAAC;AAC/C,QAAI,KAAK,QAAQ,WAAW;AAC1B,YAAM,MAAM,KAAK,QAAQ,UAAU,MAAM,IAAI;AAC7C,UAAI,OAAO,QAAQ,QAAQ,MAAM;AAC/B,kBAAU;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,KAAK,QAAQ,OAAO,EAAE,IAAI;AAEjC,QAAI,CAAC,MAAM;AACT,aAAO,iBACF,UAAU,OAAO,OAAO,MAAM,IAAI,KACnC;AAAA,IACN;AAEA,WAAO,uBACH,KAAK,QAAQ,aACb,OAAO,IAAI,IACX,QACC,UAAU,OAAO,OAAO,MAAM,IAAI,KACnC;AAAA,EACN;AAAA,EAEA,WAAW,OAAuB;AAChC,WAAO;AAAA,EAAiB;AAAA;AAAA,EAC1B;AAAA,EAEA,KAAK,MAAcC,QAA0B;AAC3C,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAc,OAAe,KAAa,SAA0B;AAC1E,QAAI,KAAK,QAAQ,WAAW;AAC1B,YAAM,KAAK,KAAK,QAAQ,eAAe,QAAQ,KAAK,GAAG;AACvD,aAAO,KAAK,aAAa,OAAO,UAAU;AAAA;AAAA,IAC5C;AAGA,WAAO,KAAK,SAAS,UAAU;AAAA;AAAA,EACjC;AAAA,EAEA,KAAa;AACX,WAAO,KAAK,QAAQ,QAAQ,YAAY;AAAA,EAC1C;AAAA,EAEA,KAAK,MAAc,SAAkB,OAA4B;AAC/D,UAAM,OAAO,UAAU,OAAO,MAC5B,WAAY,WAAW,UAAU,IAAM,aAAa,QAAQ,MAAO;AACrE,WAAO,MAAM,OAAO,WAAW,QAAQ,OAAO,OAAO,OAAO;AAAA,EAC9D;AAAA,EAEA,SAAS,MAAc,MAAe,SAA0B;AAC9D,WAAO,OAAO;AAAA;AAAA,EAChB;AAAA,EAEA,SAAS,SAA0B;AACjC,WAAO,aACF,UAAU,gBAAgB,MAC3B,iCACC,KAAK,QAAQ,QAAQ,OAAO,MAC7B;AAAA,EACN;AAAA,EAEA,UAAU,MAAsB;AAC9B,WAAO,MAAM;AAAA;AAAA,EACf;AAAA,EAEA,MAAM,QAAgB,MAAsB;AAC1C,QAAI;AAAM,aAAO,UAAU;AAE3B,WAAO,uBAEH,SACA,eACA,OACA;AAAA,EACN;AAAA,EAEA,SAAS,SAAyB;AAChC,WAAO;AAAA,EAAS;AAAA;AAAA,EAClB;AAAA,EAEA,UAAU,SAAiB,OAGhB;AACT,UAAM,OAAO,MAAM,SAAS,OAAO;AACnC,UAAM,MAAM,MAAM,QACd,IAAI,eAAe,MAAM,YACzB,IAAI;AACR,WAAO,MAAM,UAAU,KAAK;AAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAsB;AAC3B,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,GAAG,MAAsB;AACvB,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,SAAS,MAAsB;AAC7B,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,KAAa;AACX,WAAO,KAAK,QAAQ,QAAQ,UAAU;AAAA,EACxC;AAAA,EAEA,IAAI,MAAsB;AACxB,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,KAAK,MAAc,OAAkC,MAAsB;AACzE,WAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ,SAAS,IAAI;AACjE,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AACA,QAAI,MAAM,cAAc,OAAO;AAC/B,QAAI,OAAO;AACT,aAAO,aAAa,QAAQ;AAAA,IAC9B;AACA,WAAO,MAAM,OAAO;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAc,OAAsB,MAAsB;AAC9D,WAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ,SAAS,IAAI;AACjE,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,aAAa,cAAc;AACrC,QAAI,OAAO;AACT,aAAO,WAAW;AAAA,IACpB;AACA,WAAO,KAAK,QAAQ,QAAQ,OAAO;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAuB;AAC1B,WAAO;AAAA,EACT;AACF;;;AClKO,IAAM,gBAAN,MAAoB;AAAA;AAAA,EAEzB,OAAO,MAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,GAAG,MAAc;AACf,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,MAAc;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAc;AAChB,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAc;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAc;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAc,OAAkC,MAAc;AACjE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAAc,OAAsB,MAAc;AACtD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,KAAK;AACH,WAAO;AAAA,EACT;AACF;;;ACpCO,IAAM,WAAN,MAAe;AAAA,EAGpB,cAAc;AACZ,SAAK,OAAO,CAAC;AAAA,EACf;AAAA,EAEA,UAAU,OAAe;AACvB,WAAO,MACJ,YAAY,EACZ,KAAK,EAEL,QAAQ,mBAAmB,EAAE,EAE7B,QAAQ,iEAAiE,EAAE,EAC3E,QAAQ,OAAO,GAAG;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,cAAsB,UAA+B;AACnE,QAAI,OAAO;AACX,QAAI,uBAAuB;AAC3B,QAAI,KAAK,KAAK,eAAe,IAAI,GAAG;AAClC,6BAAuB,KAAK,KAAK,YAAY;AAC7C,SAAG;AACD;AACA,eAAO,eAAe,MAAM;AAAA,MAC9B,SAAS,KAAK,KAAK,eAAe,IAAI;AAAA,IACxC;AACA,QAAI,CAAC,UAAU;AACb,WAAK,KAAK,YAAY,IAAI;AAC1B,WAAK,KAAK,IAAI,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,OAAeC,WAA0B,CAAC,GAAG;AAChD,UAAM,OAAO,KAAK,UAAU,KAAK;AACjC,WAAO,KAAK,gBAAgB,MAAMA,SAAQ,MAAM;AAAA,EAClD;AACF;;;ACrCO,IAAM,UAAN,MAAc;AAAA,EAKnB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAC1B,SAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,IAAI,UAAU;AAC/D,SAAK,WAAW,KAAK,QAAQ;AAC7B,SAAK,SAAS,UAAU,KAAK;AAC7B,SAAK,eAAe,IAAI,cAAc;AACtC,SAAK,UAAU,IAAI,SAAS;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAM,QAAiBA,UAAyB;AACrD,UAAMC,UAAS,IAAI,QAAQD,QAAO;AAClC,WAAOC,QAAO,MAAM,MAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,YAAY,QAAiBD,UAAyB;AAC3D,UAAMC,UAAS,IAAI,QAAQD,QAAO;AAClC,WAAOC,QAAO,YAAY,MAAM;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAiB,MAAM,MAAc;AACzC,QAAI,MAAM,IACR,GACA,GACA,GACA,IACA,IACA,KACA,MACA,QACA,MACA,OACA,SACA,OACA,OACA,UACA,MACA,SACA,MACA,UACA;AAEF,UAAM,IAAI,OAAO;AACjB,SAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAQ,OAAO,CAAC;AAGhB,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,GAAG;AACjH,cAAM,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK,GAAG,KAAK;AAChF,YAAI,QAAQ,SAAS,CAAC,CAAC,SAAS,MAAM,WAAW,QAAQ,SAAS,cAAc,QAAQ,QAAQ,aAAa,MAAM,EAAE,SAAS,MAAM,IAAI,GAAG;AACzI,iBAAO,OAAO;AACd;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK,SAAS;AACZ;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,KAAK,SAAS,GAAG;AACxB;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,iBAAO,KAAK,SAAS;AAAA,YACnB,KAAK,YAAY,MAAM,MAAO;AAAA,YAC9B,MAAM;AAAA,YACN,SAAS,KAAK,YAAY,MAAM,QAAS,KAAK,YAAY,CAAC;AAAA,YAC3D,KAAK;AAAA,UAAO;AACd;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,KAAK,SAAS;AAAA,YAAK,MAAM;AAAA,YAC9B,MAAM;AAAA,YACN,CAAC,CAAC,MAAM;AAAA,UAAO;AACjB;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,mBAAS;AAGT,iBAAO;AACP,eAAK,MAAM,OAAO;AAClB,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,oBAAQ,KAAK,SAAS;AAAA,cACpB,KAAK,YAAY,MAAM,OAAO,CAAC,EAAE,MAAM;AAAA,cACvC,EAAE,QAAQ,MAAM,OAAO,MAAM,MAAM,CAAC,EAAE;AAAA,YACxC;AAAA,UACF;AACA,oBAAU,KAAK,SAAS,SAAS,IAAI;AAErC,iBAAO;AACP,eAAK,MAAM,KAAK;AAChB,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,kBAAM,MAAM,KAAK,CAAC;AAElB,mBAAO;AACP,iBAAK,IAAI;AACT,iBAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,sBAAQ,KAAK,SAAS;AAAA,gBACpB,KAAK,YAAY,IAAI,CAAC,EAAE,MAAM;AAAA,gBAC9B,EAAE,QAAQ,OAAO,OAAO,MAAM,MAAM,CAAC,EAAE;AAAA,cACzC;AAAA,YACF;AAEA,oBAAQ,KAAK,SAAS,SAAS,IAAI;AAAA,UACrC;AACA,iBAAO,KAAK,SAAS,MAAM,QAAQ,IAAI;AACvC;AAAA,QACF;AAAA,QACA,KAAK,cAAc;AACjB,iBAAO,KAAK,MAAM,MAAM,MAAO;AAC/B,iBAAO,KAAK,SAAS,WAAW,IAAI;AACpC;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,oBAAU,MAAM;AAChB,kBAAQ,MAAM;AACd,kBAAQ,MAAM;AACd,eAAK,MAAM,MAAM;AAEjB,iBAAO;AACP,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,mBAAO,MAAM,MAAM,CAAC;AACpB,sBAAU,KAAK;AACf,mBAAO,KAAK;AAEZ,uBAAW;AACX,gBAAI,KAAK,MAAM;AACb,yBAAW,KAAK,SAAS,SAAS,CAAC,CAAC,OAAO;AAC3C,kBAAI,OAAO;AACT,oBAAI,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,SAAS,aAAa;AACjE,uBAAK,OAAO,CAAC,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE;AACtD,sBAAI,KAAK,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,EAAE,OAAO,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,QAAQ;AACzG,yBAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAAA,kBAC5E;AAAA,gBACF,OAAO;AACL,uBAAK,OAAO,QAAQ;AAAA,oBAClB,MAAM;AAAA,oBACN,MAAM;AAAA,kBACR,CAAgB;AAAA,gBAClB;AAAA,cACF,OAAO;AACL,4BAAY;AAAA,cACd;AAAA,YACF;AAEA,wBAAY,KAAK,MAAM,KAAK,QAAQ,KAAK;AACzC,oBAAQ,KAAK,SAAS,SAAS,UAAU,MAAM,CAAC,CAAC,OAAO;AAAA,UAC1D;AAEA,iBAAO,KAAK,SAAS,KAAK,MAAM,SAAS,KAAK;AAC9C;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,KAAK,SAAS,KAAK,MAAM,MAAM,MAAM,KAAK;AACjD;AAAA,QACF;AAAA,QACA,KAAK,aAAa;AAChB,iBAAO,KAAK,SAAS,UAAU,KAAK,YAAY,MAAM,MAAO,CAAE;AAC/D;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM,IAAI,MAAM;AAC7D,iBAAO,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,EAAE,SAAS,QAAQ;AACjD,oBAAQ,OAAO,EAAE,CAAC;AAClB,oBAAQ,QAAQ,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM,IAAI,MAAM;AAAA,UACxE;AACA,iBAAO,MAAM,KAAK,SAAS,UAAU,IAAK,IAAI;AAC9C;AAAA,QACF;AAAA,QAEA,SAAS;AACP,gBAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,cAAI,KAAK,QAAQ,QAAQ;AACvB,oBAAQ,MAAM,MAAM;AACpB,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,IAAI,MAAM,MAAM;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,QAAiB,UAA8C;AACzE,eAAW,YAAY,KAAK;AAC5B,QAAI,MAAM,IACR,GACA,OACA;AAEF,UAAM,IAAI,OAAO;AACjB,SAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAQ,OAAO,CAAC;AAGhB,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,GAAG;AACjH,cAAM,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK,GAAG,KAAK;AAChF,YAAI,QAAQ,SAAS,CAAC,CAAC,UAAU,QAAQ,QAAQ,SAAS,UAAU,MAAM,YAAY,MAAM,OAAO,MAAM,EAAE,SAAS,MAAM,IAAI,GAAG;AAC/H,iBAAO,OAAO;AACd;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK,UAAU;AACb,iBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,SAAS,KAAK,MAAM,MAAM,MAAM,OAAO,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AACxF;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,iBAAO,SAAS,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AACzD;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,iBAAO,SAAS,OAAO,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AACjE;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,SAAS,GAAG,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AAC7D;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,iBAAO,SAAS,SAAS,MAAM,IAAI;AACnC;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,SAAS,GAAG;AACnB;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,iBAAO,SAAS,IAAI,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AAC9D;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,cAAI,KAAK,QAAQ,QAAQ;AACvB,oBAAQ,MAAM,MAAM;AACpB,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,IAAI,MAAM,MAAM;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;;;AC/RO,IAAM,SAAN,MAAa;AAAA,EAGlB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,UAAkB;AAC3B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,MAA0B;AACpC,WAAO;AAAA,EACT;AACF;AAzBa,OAOJ,mBAAmB,oBAAI,IAAI;AAAA,EAChC;AAAA,EACA;AACF,CAAC;;;ACbH;AAiBO,IAAM,SAAN,MAAa;AAAA,EAiBlB,eAAe,MAAyB;AAqMxC;AAiIA;AAtVA,oBAAW,aAAa;AACxB,mBAAU,KAAK;AAEf,iBAAQ,sBAAK,kCAAL,WAAoB,OAAO,KAAK,QAAQ;AAChD,uBAAc,sBAAK,kCAAL,WAAoB,OAAO,WAAW,QAAQ;AAE5D,kBAAS;AACT,kBAAS,QAAQ;AACjB,oBAAW;AACX,wBAAe;AACf,iBAAQ;AACR,iBAAQ,OAAO;AACf,qBAAY;AACZ,mBAAU;AACV,iBAAQ;AAGN,SAAK,IAAI,GAAG,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAsB,QAA8B,UAAqC;AACvF,QAAI,SAAc,CAAC;AACnB,eAAW,SAAS,QAAQ;AAC1B,eAAS,OAAO,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC;AACjD,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK,SAAS;AACZ,qBAAW,QAAQ,MAAM,QAAQ;AAC/B,qBAAS,OAAO,OAAO,KAAK,WAAW,KAAK,QAAS,QAAQ,CAAC;AAAA,UAChE;AACA,qBAAW,OAAO,MAAM,MAAM;AAC5B,uBAAW,QAAQ,KAAK;AACtB,uBAAS,OAAO,OAAO,KAAK,WAAW,KAAK,QAAS,QAAQ,CAAC;AAAA,YAChE;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,mBAAS,OAAO,OAAO,KAAK,WAAW,MAAM,OAAO,QAAQ,CAAC;AAC7D;AAAA,QACF;AAAA,QACA,SAAS;AACP,cAAI,KAAK,SAAS,cAAc,KAAK,SAAS,WAAW,eAAe,KAAK,SAAS,WAAW,YAAY,MAAM,IAAI,GAAG;AACxH,iBAAK,SAAS,WAAW,YAAY,MAAM,IAAI,EAAE,QAAQ,CAAC,gBAAgB;AAExE,uBAAS,OAAO,OAAO,KAAK,WAAW,MAAM,WAAW,GAAG,QAAQ,CAAC;AAAA,YACtE,CAAC;AAAA,UACH,WAAW,MAAM,QAAQ;AACvB,qBAAS,OAAO,OAAO,KAAK,WAAW,MAAM,QAAQ,QAAQ,CAAC;AAAA,UAChE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAyB;AAC9B,UAAM,aAAuD,KAAK,SAAS,cAAc,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,EAAE;AAE1H,SAAK,QAAQ,CAAC,SAAS;AAErB,YAAM,OAAO,EAAE,GAAG,KAAK;AAGvB,WAAK,QAAQ,KAAK,SAAS,SAAS,KAAK,SAAS;AAGlD,UAAI,KAAK,YAAY;AACnB,aAAK,WAAW,QAAQ,CAAC,QAAQ;AAC/B,cAAI,CAAC,IAAI,MAAM;AACb,kBAAM,IAAI,MAAM,yBAAyB;AAAA,UAC3C;AACA,cAAI,cAAc,KAAK;AACrB,kBAAM,eAAe,WAAW,UAAU,IAAI,IAAI;AAClD,gBAAI,cAAc;AAEhB,yBAAW,UAAU,IAAI,IAAI,IAAI,YAAYC,OAAM;AACjD,oBAAI,MAAM,IAAI,SAAS,MAAM,MAAMA,KAAI;AACvC,oBAAI,QAAQ,OAAO;AACjB,wBAAM,aAAa,MAAM,MAAMA,KAAI;AAAA,gBACrC;AACA,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AACL,yBAAW,UAAU,IAAI,IAAI,IAAI,IAAI;AAAA,YACvC;AAAA,UACF;AACA,cAAI,eAAe,KAAK;AACtB,gBAAI,CAAC,IAAI,SAAU,IAAI,UAAU,WAAW,IAAI,UAAU,UAAW;AACnE,oBAAM,IAAI,MAAM,6CAA6C;AAAA,YAC/D;AACA,gBAAI,WAAW,IAAI,KAAK,GAAG;AACzB,yBAAW,IAAI,KAAK,EAAE,QAAQ,IAAI,SAAS;AAAA,YAC7C,OAAO;AACL,yBAAW,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS;AAAA,YACxC;AACA,gBAAI,IAAI,OAAO;AACb,kBAAI,IAAI,UAAU,SAAS;AACzB,oBAAI,WAAW,YAAY;AACzB,6BAAW,WAAW,KAAK,IAAI,KAAM;AAAA,gBACvC,OAAO;AACL,6BAAW,aAAa,CAAC,IAAI,KAAM;AAAA,gBACrC;AAAA,cACF,WAAW,IAAI,UAAU,UAAU;AACjC,oBAAI,WAAW,aAAa;AAC1B,6BAAW,YAAY,KAAK,IAAI,KAAM;AAAA,gBACxC,OAAO;AACL,6BAAW,cAAc,CAAC,IAAI,KAAM;AAAA,gBACtC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI,iBAAiB,OAAO,IAAI,aAAa;AAC3C,uBAAW,YAAY,IAAI,IAAI,IAAI,IAAI;AAAA,UACzC;AAAA,QACF,CAAC;AACD,aAAK,aAAa;AAAA,MACpB;AAGA,UAAI,KAAK,UAAU;AACjB,cAAM,WAAW,KAAK,SAAS,YAAY,IAAI,UAAU,KAAK,QAAQ;AACtE,mBAAW,QAAQ,KAAK,UAAU;AAChC,gBAAM,eAAe,KAAK,SAAS,IAAyC;AAC5E,gBAAM,cAAc;AACpB,gBAAM,eAAe,SAAS,WAAW;AAEzC,mBAAS,WAAW,IAAI,IAAIA,UAAoB;AAE9C,gBAAI,MAAM,aAAa,MAAM,UAAUA,KAAI;AAC3C,gBAAI,QAAQ,OAAO;AACjB,oBAAM,aAAa,MAAM,UAAUA,KAAI;AAAA,YACzC;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAK,WAAW;AAAA,MAClB;AACA,UAAI,KAAK,WAAW;AAClB,cAAM,YAAY,KAAK,SAAS,aAAa,IAAI,WAAW,KAAK,QAAQ;AACzE,mBAAW,QAAQ,KAAK,WAAW;AACjC,gBAAM,gBAAgB,KAAK,UAAU,IAA0C;AAC/E,gBAAM,eAAe;AACrB,gBAAM,gBAAgB,UAAU,YAAY;AAE5C,oBAAU,YAAY,IAAI,IAAIA,UAAoB;AAChD,gBAAI,MAAM,cAAc,MAAM,WAAWA,KAAI;AAC7C,gBAAI,QAAQ,OAAO;AACjB,oBAAM,cAAc,MAAM,WAAWA,KAAI;AAAA,YAC3C;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAK,YAAY;AAAA,MACnB;AAGA,UAAI,KAAK,OAAO;AACd,cAAM,QAAQ,KAAK,SAAS,SAAS,IAAI,OAAO;AAChD,mBAAW,QAAQ,KAAK,OAAO;AAC7B,gBAAM,YAAY,KAAK,MAAM,IAAsC;AACnE,gBAAM,WAAW;AACjB,gBAAM,WAAW,MAAM,QAAQ;AAC/B,cAAI,OAAO,iBAAiB,IAAI,IAAI,GAAG;AACrC,kBAAM,QAAwC,IAAI,CAAC,QAA4B;AAC7E,kBAAI,KAAK,SAAS,OAAO;AACvB,uBAAO,QAAQ,QAAQ,UAAU,KAAK,OAAO,GAAG,CAAC,EAAE,KAAK,CAAAC,SAAO;AAC7D,yBAAO,SAAS,KAAK,OAAOA,IAAG;AAAA,gBACjC,CAAC;AAAA,cACH;AAEA,oBAAM,MAAM,UAAU,KAAK,OAAO,GAAG;AACrC,qBAAO,SAAS,KAAK,OAAO,GAAG;AAAA,YACjC;AAAA,UACF,OAAO;AACL,kBAAM,QAAQ,IAAI,IAAID,UAAoB;AACxC,kBAAI,MAAM,UAAU,MAAM,OAAOA,KAAI;AACrC,kBAAI,QAAQ,OAAO;AACjB,sBAAM,SAAS,MAAM,OAAOA,KAAI;AAAA,cAClC;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,aAAK,QAAQ;AAAA,MACf;AAGA,UAAI,KAAK,YAAY;AACnB,cAAME,cAAa,KAAK,SAAS;AACjC,aAAK,aAAa,SAAS,OAAO;AAChC,cAAI,SAAsC,CAAC;AAC3C,iBAAO,KAAK,KAAK,WAAY,KAAK,MAAM,KAAK,CAAC;AAC9C,cAAIA,aAAY;AACd,qBAAS,OAAO,OAAOA,YAAW,KAAK,MAAM,KAAK,CAAC;AAAA,UACrD;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,WAAK,WAAW,EAAE,GAAG,KAAK,UAAU,GAAG,KAAK;AAAA,IAC9C,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,KAAoB;AAC7B,SAAK,WAAW,EAAE,GAAG,KAAK,UAAU,GAAG,IAAI;AAC3C,WAAO;AAAA,EACT;AA+JF;AA7JE;AAAA,mBAAc,SAACC,QAAuEC,SAA0E;AAC9J,SAAO,CAAC,KAAa,eAAmE,aAA4F;AAClL,QAAI,OAAO,kBAAkB,YAAY;AACvC,iBAAW;AACX,sBAAgB;AAAA,IAClB;AAEA,UAAM,UAAU,EAAE,GAAG,cAAc;AACnC,UAAM,MAAM,EAAE,GAAG,KAAK,UAAU,GAAG,QAAQ;AAC3C,UAAM,aAAa,sBAAK,sBAAL,WAAc,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,OAAO;AAG5D,QAAI,OAAO,QAAQ,eAAe,QAAQ,MAAM;AAC9C,aAAO,WAAW,IAAI,MAAM,gDAAgD,CAAC;AAAA,IAC/E;AACA,QAAI,OAAO,QAAQ,UAAU;AAC3B,aAAO,WAAW,IAAI,MAAM,0CACxB,OAAO,UAAU,SAAS,KAAK,GAAG,IAAI,mBAAmB,CAAC;AAAA,IAChE;AAEA,sBAAkB,KAAK,QAAQ;AAE/B,QAAI,IAAI,OAAO;AACb,UAAI,MAAM,UAAU;AAAA,IACtB;AAEA,QAAI,UAAU;AACZ,YAAM,YAAY,IAAI;AACtB,UAAI;AAEJ,UAAI;AACF,YAAI,IAAI,OAAO;AACb,gBAAM,IAAI,MAAM,WAAW,GAAG;AAAA,QAChC;AACA,iBAASD,OAAM,KAAK,GAAG;AAAA,MACzB,SAAS,GAAP;AACA,eAAO,WAAW,CAAU;AAAA,MAC9B;AAEA,YAAM,OAAO,CAAC,QAAgB;AAC5B,YAAI;AAEJ,YAAI,CAAC,KAAK;AACR,cAAI;AACF,gBAAI,IAAI,YAAY;AAClB,mBAAK,WAAW,QAAQ,IAAI,UAAU;AAAA,YACxC;AACA,kBAAMC,QAAO,QAAQ,GAAG;AACxB,gBAAI,IAAI,OAAO;AACb,oBAAM,IAAI,MAAM,YAAY,GAAG;AAAA,YACjC;AAAA,UACF,SAAS,GAAP;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,YAAI,YAAY;AAEhB,eAAO,MACH,WAAW,GAAG,IACd,SAAU,MAAM,GAAG;AAAA,MACzB;AAEA,UAAI,CAAC,aAAa,UAAU,SAAS,GAAG;AACtC,eAAO,KAAK;AAAA,MACd;AAEA,aAAO,IAAI;AAEX,UAAI,CAAC,OAAO;AAAQ,eAAO,KAAK;AAEhC,UAAI,UAAU;AACd,WAAK,WAAW,QAAQ,CAAC,UAAU;AACjC,YAAI,MAAM,SAAS,QAAQ;AACzB;AACA,qBAAW,MAAM;AACf,sBAAU,MAAM,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS;AAC/C,kBAAI,KAAK;AACP,uBAAO,KAAK,GAAG;AAAA,cACjB;AACA,kBAAI,QAAQ,QAAQ,SAAS,MAAM,MAAM;AACvC,sBAAM,OAAO;AACb,sBAAM,UAAU;AAAA,cAClB;AAEA;AACA,kBAAI,YAAY,GAAG;AACjB,qBAAK;AAAA,cACP;AAAA,YACF,CAAC;AAAA,UACH,GAAG,CAAC;AAAA,QACN;AAAA,MACF,CAAC;AAED,UAAI,YAAY,GAAG;AACjB,aAAK;AAAA,MACP;AAEA;AAAA,IACF;AAEA,QAAI,IAAI,OAAO;AACb,aAAO,QAAQ,QAAQ,IAAI,QAAQ,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAC/D,KAAK,CAAAC,SAAOF,OAAME,MAAK,GAAG,CAAC,EAC3B,KAAK,YAAU,IAAI,aAAa,QAAQ,IAAI,KAAK,WAAW,QAAQ,IAAI,UAAU,CAAC,EAAE,KAAK,MAAM,MAAM,IAAI,MAAM,EAChH,KAAK,YAAUD,QAAO,QAAQ,GAAG,CAAC,EAClC,KAAK,UAAQ,IAAI,QAAQ,IAAI,MAAM,YAAY,IAAI,IAAI,IAAI,EAC3D,MAAM,UAAU;AAAA,IACrB;AAEA,QAAI;AACF,UAAI,IAAI,OAAO;AACb,cAAM,IAAI,MAAM,WAAW,GAAG;AAAA,MAChC;AACA,YAAM,SAASD,OAAM,KAAK,GAAG;AAC7B,UAAI,IAAI,YAAY;AAClB,aAAK,WAAW,QAAQ,IAAI,UAAU;AAAA,MACxC;AACA,UAAI,OAAOC,QAAO,QAAQ,GAAG;AAC7B,UAAI,IAAI,OAAO;AACb,eAAO,IAAI,MAAM,YAAY,IAAI;AAAA,MACnC;AACA,aAAO;AAAA,IACT,SAAS,GAAP;AACA,aAAO,WAAW,CAAU;AAAA,IAC9B;AAAA,EACF;AACF;AAEA;AAAA,aAAQ,SAAC,QAAiB,OAAgB,UAA2B;AACnE,SAAO,CAAC,MAAmD;AACzD,MAAE,WAAW;AAEb,QAAI,QAAQ;AACV,YAAM,MAAM,mCACR,OAAO,EAAE,UAAU,IAAI,IAAI,IAC3B;AACJ,UAAI,OAAO;AACT,eAAO,QAAQ,QAAQ,GAAG;AAAA,MAC5B;AACA,UAAI,UAAU;AACZ,iBAAS,MAAM,GAAG;AAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,OAAO;AACT,aAAO,QAAQ,OAAO,CAAC;AAAA,IACzB;AACA,QAAI,UAAU;AACZ,eAAS,CAAC;AACV;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;;;AXjXF,IAAM,iBAAiB,IAAI,OAAO;AAwC3B,SAAS,OAAO,KAAa,KAAsC,UAA6E;AACrJ,SAAO,eAAe,MAAM,KAAK,KAAK,QAAQ;AAChD;AAOA,OAAO,UACP,OAAO,aAAa,SAASE,UAAwB;AACnD,iBAAe,WAAWA,QAAO;AACjC,SAAO,WAAW,eAAe;AACjC,iBAAe,OAAO,QAAQ;AAC9B,SAAO;AACT;AAKA,OAAO,cAAc;AAErB,OAAO,WAAW;AAMlB,OAAO,MAAM,YAAY,MAAyB;AAChD,iBAAe,IAAI,GAAG,IAAI;AAC1B,SAAO,WAAW,eAAe;AACjC,iBAAe,OAAO,QAAQ;AAC9B,SAAO;AACT;AAMA,OAAO,aAAa,SAAoB,QAA8B,UAAqC;AACzG,SAAO,eAAe,WAAW,QAAQ,QAAQ;AACnD;AASA,OAAO,cAAc,eAAe;AAKpC,OAAO,SAAS;AAChB,OAAO,SAAS,QAAQ;AACxB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,QAAQ;AACf,OAAO,QAAQ,OAAO;AACtB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,OAAO,QAAQ;AAER,IAAM,UAAU,OAAO;AACvB,IAAM,aAAa,OAAO;AAC1B,IAAM,MAAM,OAAO;AACnB,IAAM,aAAa,OAAO;AAC1B,IAAM,cAAc,OAAO;AAC3B,IAAM,QAAQ;AACd,IAAM,SAAS,QAAQ;AACvB,IAAM,QAAQ,OAAO;","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.d.ts b/lib/marked.d.ts index 218017f448..72a5e97c5e 100644 --- a/lib/marked.d.ts +++ b/lib/marked.d.ts @@ -1,4 +1,4 @@ -type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del) & { +type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del | Tokens.Generic) & { loose?: boolean; tokens?: Token[]; }; @@ -24,7 +24,7 @@ declare namespace Tokens { } interface Table { type: 'table'; - raw?: string; + raw: string; align: Array<'center' | 'left' | 'right' | null>; header: TableCell[]; rows: TableCell[][]; @@ -295,7 +295,7 @@ interface TokenizerExtension { name: string; level: 'block' | 'inline'; start?: ((this: TokenizerThis, src: string) => number | void) | undefined; - tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | void; + tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; childTokens?: string[] | undefined; } interface RendererThis { @@ -532,7 +532,7 @@ type ResultCallback$1 = (error: Error | null, parseResult?: string) => undefined declare class Marked { #private; defaults: MarkedOptions; - options: (opt: any) => this; + options: (opt: MarkedOptions) => this; parse: (src: string, optOrCallback?: MarkedOptions | ResultCallback$1 | undefined | null, callback?: ResultCallback$1 | undefined) => string | Promise | undefined; parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback$1 | undefined | null, callback?: ResultCallback$1 | undefined) => string | Promise | undefined; Parser: typeof _Parser; @@ -550,7 +550,7 @@ declare class Marked { */ walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => T | T[]): T[]; use(...args: MarkedExtension[]): this; - setOptions(opt: any): this; + setOptions(opt: MarkedOptions): this; } /** diff --git a/lib/marked.esm.js b/lib/marked.esm.js index a105a719d5..7ade98755a 100644 --- a/lib/marked.esm.js +++ b/lib/marked.esm.js @@ -567,8 +567,7 @@ var _Tokenizer = class { if (cap) { const item = { type: "table", - // splitCells expects a number as second argument - // @ts-expect-error + raw: cap[0], header: splitCells(cap[1]).map((c) => { return { text: c }; }), @@ -576,7 +575,6 @@ var _Tokenizer = class { rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : [] }; if (item.header.length === item.align.length) { - item.raw = cap[0]; let l = item.align.length; let i, j, k, row; for (i = 0; i < l; i++) { @@ -1131,7 +1129,10 @@ var _Lexer = class { return leading + " ".repeat(tabs.length); }); } - let token, lastToken, cutSrc, lastParagraphClipped; + let token; + let lastToken; + let cutSrc; + let lastParagraphClipped; while (src) { if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => { if (token = extTokenizer.call({ lexer: this }, src, tokens)) { @@ -1981,9 +1982,11 @@ var Marked = class { if (pack.renderer) { const renderer = this.defaults.renderer || new _Renderer(this.defaults); for (const prop in pack.renderer) { - const prevRenderer = renderer[prop]; - renderer[prop] = (...args2) => { - let ret = pack.renderer[prop].apply(renderer, args2); + const rendererFunc = pack.renderer[prop]; + const rendererKey = prop; + const prevRenderer = renderer[rendererKey]; + renderer[rendererKey] = (...args2) => { + let ret = rendererFunc.apply(renderer, args2); if (ret === false) { ret = prevRenderer.apply(renderer, args2); } @@ -1995,9 +1998,11 @@ var Marked = class { if (pack.tokenizer) { const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); for (const prop in pack.tokenizer) { - const prevTokenizer = tokenizer[prop]; - tokenizer[prop] = (...args2) => { - let ret = pack.tokenizer[prop].apply(tokenizer, args2); + const tokenizerFunc = pack.tokenizer[prop]; + const tokenizerKey = prop; + const prevTokenizer = tokenizer[tokenizerKey]; + tokenizer[tokenizerKey] = (...args2) => { + let ret = tokenizerFunc.apply(tokenizer, args2); if (ret === false) { ret = prevTokenizer.apply(tokenizer, args2); } @@ -2009,20 +2014,22 @@ var Marked = class { if (pack.hooks) { const hooks = this.defaults.hooks || new _Hooks(); for (const prop in pack.hooks) { - const prevHook = hooks[prop]; + const hooksFunc = pack.hooks[prop]; + const hooksKey = prop; + const prevHook = hooks[hooksKey]; if (_Hooks.passThroughHooks.has(prop)) { - hooks[prop] = (arg) => { + hooks[hooksKey] = (arg) => { if (this.defaults.async) { - return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then((ret2) => { + return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => { return prevHook.call(hooks, ret2); }); } - const ret = pack.hooks[prop].call(hooks, arg); + const ret = hooksFunc.call(hooks, arg); return prevHook.call(hooks, ret); }; } else { - hooks[prop] = (...args2) => { - let ret = pack.hooks[prop].apply(hooks, args2); + hooks[hooksKey] = (...args2) => { + let ret = hooksFunc.apply(hooks, args2); if (ret === false) { ret = prevHook.apply(hooks, args2); } diff --git a/lib/marked.esm.js.map b/lib/marked.esm.js.map index b67d9e40c1..e1aa0beecc 100644 --- a/lib/marked.esm.js.map +++ b/lib/marked.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n // splitCells expects a number as second argument\n // @ts-expect-error\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens) as string,\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer) as string),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens)!;\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args: unknown[]) => {\n let ret = pack.renderer![prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args: unknown[]) => {\n let ret = pack.tokenizer![prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[prop as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(pack.hooks![prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks![prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks![prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: any) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension[\"renderer\"]] as Function;\n const rendererKey = prop as keyof _Renderer\n const prevRenderer = renderer[rendererKey] as Function;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension[\"tokenizer\"]] as Function;\n const tokenizerKey = prop as keyof _Tokenizer\n const prevTokenizer = tokenizer[tokenizerKey] as Function;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension[\"hooks\"]] as Function;\n const hooksKey = prop as keyof _Hooks\n const prevHook = hooks[hooksKey] as Function;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.umd.js b/lib/marked.umd.js index 6314a372df..3fe52cdc79 100644 --- a/lib/marked.umd.js +++ b/lib/marked.umd.js @@ -610,8 +610,7 @@ var marked = (() => { if (cap) { const item = { type: "table", - // splitCells expects a number as second argument - // @ts-expect-error + raw: cap[0], header: splitCells(cap[1]).map((c) => { return { text: c }; }), @@ -619,7 +618,6 @@ var marked = (() => { rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : [] }; if (item.header.length === item.align.length) { - item.raw = cap[0]; let l = item.align.length; let i, j, k, row; for (i = 0; i < l; i++) { @@ -1174,7 +1172,10 @@ var marked = (() => { return leading + " ".repeat(tabs.length); }); } - let token, lastToken, cutSrc, lastParagraphClipped; + let token; + let lastToken; + let cutSrc; + let lastParagraphClipped; while (src) { if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => { if (token = extTokenizer.call({ lexer: this }, src, tokens)) { @@ -2024,9 +2025,11 @@ ${content} if (pack.renderer) { const renderer = this.defaults.renderer || new _Renderer(this.defaults); for (const prop in pack.renderer) { - const prevRenderer = renderer[prop]; - renderer[prop] = (...args2) => { - let ret = pack.renderer[prop].apply(renderer, args2); + const rendererFunc = pack.renderer[prop]; + const rendererKey = prop; + const prevRenderer = renderer[rendererKey]; + renderer[rendererKey] = (...args2) => { + let ret = rendererFunc.apply(renderer, args2); if (ret === false) { ret = prevRenderer.apply(renderer, args2); } @@ -2038,9 +2041,11 @@ ${content} if (pack.tokenizer) { const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); for (const prop in pack.tokenizer) { - const prevTokenizer = tokenizer[prop]; - tokenizer[prop] = (...args2) => { - let ret = pack.tokenizer[prop].apply(tokenizer, args2); + const tokenizerFunc = pack.tokenizer[prop]; + const tokenizerKey = prop; + const prevTokenizer = tokenizer[tokenizerKey]; + tokenizer[tokenizerKey] = (...args2) => { + let ret = tokenizerFunc.apply(tokenizer, args2); if (ret === false) { ret = prevTokenizer.apply(tokenizer, args2); } @@ -2052,20 +2057,22 @@ ${content} if (pack.hooks) { const hooks = this.defaults.hooks || new _Hooks(); for (const prop in pack.hooks) { - const prevHook = hooks[prop]; + const hooksFunc = pack.hooks[prop]; + const hooksKey = prop; + const prevHook = hooks[hooksKey]; if (_Hooks.passThroughHooks.has(prop)) { - hooks[prop] = (arg) => { + hooks[hooksKey] = (arg) => { if (this.defaults.async) { - return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then((ret2) => { + return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => { return prevHook.call(hooks, ret2); }); } - const ret = pack.hooks[prop].call(hooks, arg); + const ret = hooksFunc.call(hooks, arg); return prevHook.call(hooks, ret); }; } else { - hooks[prop] = (...args2) => { - let ret = pack.hooks[prop].apply(hooks, args2); + hooks[hooksKey] = (...args2) => { + let ret = hooksFunc.apply(hooks, args2); if (ret === false) { ret = prevHook.apply(hooks, args2); } diff --git a/lib/marked.umd.js.map b/lib/marked.umd.js.map index 10c66a4fcc..bd5215026a 100644 --- a/lib/marked.umd.js.map +++ b/lib/marked.umd.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n // splitCells expects a number as second argument\n // @ts-expect-error\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens) as string,\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer) as string),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens)!;\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args: unknown[]) => {\n let ret = pack.renderer![prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args: unknown[]) => {\n let ret = pack.tokenizer![prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[prop as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(pack.hooks![prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks![prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks![prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: any) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension[\"renderer\"]] as Function;\n const rendererKey = prop as keyof _Renderer\n const prevRenderer = renderer[rendererKey] as Function;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension[\"tokenizer\"]] as Function;\n const tokenizerKey = prop as keyof _Tokenizer\n const prevTokenizer = tokenizer[tokenizerKey] as Function;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension[\"hooks\"]] as Function;\n const hooksKey = prop as keyof _Hooks\n const prevHook = hooks[hooksKey] as Function;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/marked.min.js b/marked.min.js index 454f320aeb..eb5a506d2f 100644 --- a/marked.min.js +++ b/marked.min.js @@ -3,7 +3,7 @@ * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed) * https://github.com/markedjs/marked */ -"use strict";var marked=(()=>{var e,t=Object.defineProperty,j=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,D=Object.prototype.hasOwnProperty,n=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},p=(e,t,n)=>{var s="access private method";if(t.has(e))return n;throw TypeError("Cannot "+s)},s={},C=s,r={Hooks:()=>I,Lexer:()=>v,Marked:()=>J,Parser:()=>A,Renderer:()=>S,Slugger:()=>R,TextRenderer:()=>T,Tokenizer:()=>w,defaults:()=>l,getDefaults:()=>i,lexer:()=>oe,marked:()=>O,options:()=>te,parse:()=>le,parseInline:()=>ie,parser:()=>ae,setOptions:()=>ne,use:()=>se,walkTokens:()=>re};for(e in r)t(C,e,{get:r[e],enumerable:!0});function i(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var l=i();function a(e){l=e}var o=/[&<>"']/,B=new RegExp(o.source,"g"),h=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,U=new RegExp(h.source,"g"),Q={"&":"&","<":"<",">":">",'"':""","'":"'"},c=e=>Q[e];function u(e,t){if(t){if(o.test(e))return e.replace(B,c)}else if(h.test(e))return e.replace(U,c);return e}var M=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function z(e){return e.replace(M,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var N=/(^|[^\[])\^/g;function g(n,e){n="string"==typeof n?n:n.source,e=e||"";const s={replace:(e,t)=>(t=(t="object"==typeof t&&"source"in t?t.source:t).replace(N,"$1"),n=n.replace(e,t),s),getRegex:()=>new RegExp(n,e)};return s}var H=/[^\w:]/g,F=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function d(e,t,n){if(e){let e;try{e=decodeURIComponent(z(n)).replace(H,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}var s;t&&!F.test(n)&&(e=n,k[" "+(t=t)]||(W.test(t)?k[" "+t]=t+"/":k[" "+t]=m(t,"/",!0)),s=-1===(t=k[" "+t]).indexOf(":"),n="//"===e.substring(0,2)?s?e:t.replace(X,"$1")+e:"/"===e.charAt(0)?s?e:t.replace(G,"$1")+e:t+e);try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var k={},W=/^[^:]+:\/*[^/]*$/,X=/^([^:]+:)[\s\S]*$/,G=/^([^:]+:\/*[^/]*)[\s\S]*$/;var f={exec:()=>null};function x(e,t){var n=e.replace(/\|/g,(e,t,n)=>{let s=!1,r=t;for(;0<=--r&&"\\"===n[r];)s=!s;return s?"|":" |"}).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),0t)n.splice(t);else for(;n.length{var t=e.match(/^\s+/);return null!==t&&([t]=t,t.length>=n.length)?e.slice(n.length):e}).join("\n")}(t=e[0],e[3]||""),{type:"code",raw:t,lang:e[2]&&e[2].trim().replace(this.rules.inline._escapes,"$1"),text:n}}heading(t){var n,t=this.rules.block.heading.exec(t);if(t){let e=t[2].trim();return/#$/.test(e)&&(n=m(e,"#"),!this.options.pedantic&&n&&!/ $/.test(n)||(e=n.trim())),{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}}blockquote(e){var t,n,s,e=this.rules.block.blockquote.exec(e);if(e)return t=e[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top,this.lexer.state.top=!0,s=this.lexer.blockTokens(t),this.lexer.state.top=n,{type:"blockquote",raw:e[0],tokens:s,text:t}}list(g){let d=this.rules.block.list.exec(g);if(d){let e,t,n,s,r,i,l,a,o,h,c,p,u=d[1].trim();for(var k=1" ".repeat(3*e.length)),o=g.split("\n",1)[0],this.options.pedantic?(s=2,c=a.trimLeft()):(s=4<(s=d[2].search(/[^ ]/))?1:s,c=a.slice(s),s+=d[1].length),i=!1,!a&&/^ *$/.test(o)&&(e+=o+"\n",g=g.substring(o.length+1),p=!0),!p)for(var m=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),w=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),y=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);g&&(h=g.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!w.test(o))&&!y.test(o)&&!m.test(o)&&!b.test(g);){if(o.search(/[^ ]/)>=s||!o.trim())c+="\n"+o.slice(s);else{if(i)break;if(4<=a.search(/[^ ]/))break;if(w.test(a))break;if(y.test(a))break;if(b.test(a))break;c+="\n"+o}i||o.trim()||(i=!0),e+=h+"\n",g=g.substring(h.length+1),a=o.slice(s)}f.loose||(l?f.loose=!0:/\n *\n *$/.test(e)&&(l=!0)),this.options.gfm&&(t=/^\[[ xX]\] /.exec(c))&&(n="[ ] "!==t[0],c=c.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:e,task:!!t,checked:n,loose:!1,text:c}),f.raw+=e}f.items[f.items.length-1].raw=e.trimRight(),f.items[f.items.length-1].text=c.trimRight(),f.raw=f.raw.trimRight();var _,$=f.items.length;for(r=0;r<$;r++)this.lexer.state.top=!1,f.items[r].tokens=this.lexer.blockTokens(f.items[r].text,[]),f.loose||(_=0<(_=f.items[r].tokens.filter(e=>"space"===e.type)).length&&_.some(e=>/\n.*\n/.test(e.raw)),f.loose=_);if(f.loose)for(r=0;r<$;r++)f.items[r].loose=!0;return f}}html(e){var t,n,e=this.rules.block.html.exec(e);if(e)return t={type:"html",block:!0,raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]},this.options.sanitize&&(e=this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]),(n=t).type="paragraph",n.text=e,n.tokens=this.lexer.inline(e)),t}def(e){var t,n,s,e=this.rules.block.def.exec(e);if(e)return t=e[1].toLowerCase().replace(/\s+/g," "),n=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",s=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:n,title:s}}table(i){i=this.rules.block.table.exec(i);if(i){var l={type:"table",header:x(i[1]).map(e=>({text:e})),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:i[3]&&i[3].trim()?i[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(l.header.length===l.align.length){l.raw=i[0];let e=l.align.length,t,n,s,r;for(t=0;t({text:e}));for(e=l.header.length,n=0;n/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]):e[0]}}link(n){n=this.rules.inline.link.exec(n);if(n){var s=n[2].trim();if(!this.options.pedantic&&/^$/.test(s))return;var r=m(s.slice(0,-1),"\\");if((s.length-r.length)%2==0)return}else{var i,r=function(n,s){if(-1!==n.indexOf(s[1])){var r=n.length;let e=0,t=0;for(;t$/.test(s)?e.slice(1):e.slice(1,-1):e)&&e.replace(this.rules.inline._escapes,"$1"),title:t&&t.replace(this.rules.inline._escapes,"$1")},n[0],this.lexer)}}reflink(t,n){let s;if(s=(s=this.rules.inline.reflink.exec(t))||this.rules.inline.nolink.exec(t)){let e=(s[2]||s[1]).replace(/\s+/g," ");return(e=n[e.toLowerCase()])?b(s,e,s[0],this.lexer):{type:"text",raw:t=s[0].charAt(0),text:t}}}emStrong(r,i,e=""){let l=this.rules.inline.emStrong.lDelim.exec(r);if(l&&((!l[3]||!e.match(/[\p{L}\p{N}]/u))&&(!(l[1]||l[2]||"")||!e||this.rules.inline.punctuation.exec(e)))){var a=l[0].length-1;let e,t,n=a,s=0;var o,h,c="*"===l[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,i=i.slice(-1*r.length+a);null!=(l=c.exec(i));)if(e=l[1]||l[2]||l[3]||l[4]||l[5]||l[6])if(t=e.length,l[3]||l[4])n+=t;else if((l[5]||l[6])&&a%3&&!((a+t)%3))s+=t;else if(!(0<(n-=t)))return t=Math.min(t,t+n+s),o=r.slice(0,a+l.index+t+1),Math.min(a,t)%2?(h=o.slice(1,-1),{type:"em",raw:o,text:h,tokens:this.lexer.inlineTokens(h)}):(h=o.slice(2,-2),{type:"strong",raw:o,text:h,tokens:this.lexer.inlineTokens(h)})}}codespan(t){t=this.rules.inline.code.exec(t);if(t){let e=t[2].replace(/\n/g," ");var n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return e=u(e=n&&s?e.substring(1,e.length-1):e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}}del(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n,s){n=this.rules.inline.autolink.exec(n);if(n){let e,t;return t="@"===n[2]?"mailto:"+(e=u(this.options.mangle?s(n[1]):n[1])):e=u(n[1]),{type:"link",raw:n[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e,n){var s,r;if(s=this.rules.inline.url.exec(e)){let e,t;if("@"===s[2])e=u(this.options.mangle?n(s[0]):s[0]),t="mailto:"+e;else{for(;r=s[0],s[0]=this.rules.inline._backpedal.exec(s[0])[0],r!==s[0];);e=u(s[0]),t="www."===s[1]?"http://"+s[0]:s[0]}return{type:"link",raw:s[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t,n){t=this.rules.inline.text.exec(t);if(t){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):u(t[0]):t[0]:u(this.options.smartypants?n(t[0]):t[0]),{type:"text",raw:t[0],text:e}}}},y={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},_=(y.def=g(y.def).replace("label",y._label).replace("title",y._title).getRegex(),y.bullet=/(?:[*+-]|\d{1,9}[.)])/,y.listItemStart=g(/^( *)(bull) */).replace("bull",y.bullet).getRegex(),y.list=g(y.list).replace(/bull/g,y.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+y.def.source+")").getRegex(),y._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y._comment=/|$)/,y.html=g(y.html,"i").replace("comment",y._comment).replace("tag",y._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),y.lheading=g(y.lheading).replace(/bull/g,y.bullet).getRegex(),y.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.blockquote=g(y.blockquote).replace("paragraph",y.paragraph).getRegex(),y.normal={...y},y.gfm={...y.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},y.gfm.table=g(y.gfm.table).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.gfm.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",y.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.pedantic={...y.normal,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",y._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:f,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(y.normal._paragraph).replace("hr",y.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",y.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()},{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:f,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~",_.punctuation=g(_.punctuation,"u").replace(/punctuation/g,_._punctuation).getRegex(),_.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,_.anyPunctuation=/\\[punct]/g,_._escapes=/\\([punct])/g,_._comment=g(y._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),_.emStrong.lDelim=g(_.emStrong.lDelim,"u").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimAst=g(_.emStrong.rDelimAst,"gu").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimUnd=g(_.emStrong.rDelimUnd,"gu").replace(/punct/g,_._punctuation).getRegex(),_.anyPunctuation=g(_.anyPunctuation,"gu").replace(/punct/g,_._punctuation).getRegex(),_._escapes=g(_._escapes,"gu").replace(/punct/g,_._punctuation).getRegex(),_._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,_._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,_.autolink=g(_.autolink).replace("scheme",_._scheme).replace("email",_._email).getRegex(),_._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,_.tag=g(_.tag).replace("comment",_._comment).replace("attribute",_._attribute).getRegex(),_._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,_._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,_._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,_.link=g(_.link).replace("label",_._label).replace("href",_._href).replace("title",_._title).getRegex(),_.reflink=g(_.reflink).replace("label",_._label).replace("ref",y._label).getRegex(),_.nolink=g(_.nolink).replace("ref",y._label).getRegex(),_.reflinkSearch=g(_.reflinkSearch,"g").replace("reflink",_.reflink).replace("nolink",_.nolink).getRegex(),_.normal={..._},_.pedantic={..._.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",_._label).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",_._label).getRegex()},_.gfm={..._.normal,escape:g(_.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length));let n,e,r,i;for(;s;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(e=>!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.space(s))s=s.substring(n.raw.length),1===n.raw.length&&0{"number"==typeof(n=e.call({lexer:this},a))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r)))e=t[t.length-1],i&&"paragraph"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n),i=r.length!==s.length,s=s.substring(n.raw.length);else if(n=this.tokenizer.text(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n);else if(s){var l="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(s,t=[]){let n,e,r,i=s,l,a,o;if(this.tokens.links){var h=Object.keys(this.tokens.links);if(0!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.escape(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.link(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(s,this.tokens.links))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(s,i,o))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(s,$))s=s.substring(n.raw.length),t.push(n);else if(!this.state.inLink&&(n=this.tokenizer.url(s,$)))s=s.substring(n.raw.length),t.push(n);else{if(r=s,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const p=s.slice(1);let n;this.options.extensions.startInline.forEach(e=>{"number"==typeof(n=e.call({lexer:this},p))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(n=this.tokenizer.inlineText(r,V))s=s.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),a=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(s){var c="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}return t}},S=class{constructor(e){this.options=e||l}code(e,t,n){var s,t=(t||"").match(/\S*/)[0];return this.options.highlight&&null!=(s=this.options.highlight(e,t))&&s!==e&&(n=!0,e=s),e=e.replace(/\n$/,"")+"\n",t?'
    '+(n?e:u(e,!0))+"
    \n":"
    "+(n?e:u(e,!0))+"
    \n"}blockquote(e){return`
    +"use strict";var marked=(()=>{var e,t=Object.defineProperty,j=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,D=Object.prototype.hasOwnProperty,n=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},p=(e,t,n)=>{var s="access private method";if(t.has(e))return n;throw TypeError("Cannot "+s)},s={},C=s,r={Hooks:()=>I,Lexer:()=>v,Marked:()=>J,Parser:()=>A,Renderer:()=>S,Slugger:()=>R,TextRenderer:()=>T,Tokenizer:()=>w,defaults:()=>l,getDefaults:()=>i,lexer:()=>oe,marked:()=>O,options:()=>te,parse:()=>le,parseInline:()=>ie,parser:()=>ae,setOptions:()=>ne,use:()=>se,walkTokens:()=>re};for(e in r)t(C,e,{get:r[e],enumerable:!0});function i(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var l=i();function a(e){l=e}var o=/[&<>"']/,B=new RegExp(o.source,"g"),h=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,U=new RegExp(h.source,"g"),Q={"&":"&","<":"<",">":">",'"':""","'":"'"},c=e=>Q[e];function u(e,t){if(t){if(o.test(e))return e.replace(B,c)}else if(h.test(e))return e.replace(U,c);return e}var M=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function z(e){return e.replace(M,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var N=/(^|[^\[])\^/g;function g(n,e){n="string"==typeof n?n:n.source,e=e||"";const s={replace:(e,t)=>(t=(t="object"==typeof t&&"source"in t?t.source:t).replace(N,"$1"),n=n.replace(e,t),s),getRegex:()=>new RegExp(n,e)};return s}var H=/[^\w:]/g,F=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function d(e,t,n){if(e){let e;try{e=decodeURIComponent(z(n)).replace(H,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}var s;t&&!F.test(n)&&(e=n,k[" "+(t=t)]||(W.test(t)?k[" "+t]=t+"/":k[" "+t]=m(t,"/",!0)),s=-1===(t=k[" "+t]).indexOf(":"),n="//"===e.substring(0,2)?s?e:t.replace(X,"$1")+e:"/"===e.charAt(0)?s?e:t.replace(G,"$1")+e:t+e);try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var k={},W=/^[^:]+:\/*[^/]*$/,X=/^([^:]+:)[\s\S]*$/,G=/^([^:]+:\/*[^/]*)[\s\S]*$/;var f={exec:()=>null};function x(e,t){var n=e.replace(/\|/g,(e,t,n)=>{let s=!1,r=t;for(;0<=--r&&"\\"===n[r];)s=!s;return s?"|":" |"}).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),0t)n.splice(t);else for(;n.length{var t=e.match(/^\s+/);return null!==t&&([t]=t,t.length>=n.length)?e.slice(n.length):e}).join("\n")}(t=e[0],e[3]||""),{type:"code",raw:t,lang:e[2]&&e[2].trim().replace(this.rules.inline._escapes,"$1"),text:n}}heading(t){var n,t=this.rules.block.heading.exec(t);if(t){let e=t[2].trim();return/#$/.test(e)&&(n=m(e,"#"),!this.options.pedantic&&n&&!/ $/.test(n)||(e=n.trim())),{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}}blockquote(e){var t,n,s,e=this.rules.block.blockquote.exec(e);if(e)return t=e[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top,this.lexer.state.top=!0,s=this.lexer.blockTokens(t),this.lexer.state.top=n,{type:"blockquote",raw:e[0],tokens:s,text:t}}list(g){let d=this.rules.block.list.exec(g);if(d){let e,t,n,s,r,i,l,a,o,h,c,p,u=d[1].trim();for(var k=1" ".repeat(3*e.length)),o=g.split("\n",1)[0],this.options.pedantic?(s=2,c=a.trimLeft()):(s=4<(s=d[2].search(/[^ ]/))?1:s,c=a.slice(s),s+=d[1].length),i=!1,!a&&/^ *$/.test(o)&&(e+=o+"\n",g=g.substring(o.length+1),p=!0),!p)for(var m=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),w=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),y=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);g&&(h=g.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!w.test(o))&&!y.test(o)&&!m.test(o)&&!b.test(g);){if(o.search(/[^ ]/)>=s||!o.trim())c+="\n"+o.slice(s);else{if(i)break;if(4<=a.search(/[^ ]/))break;if(w.test(a))break;if(y.test(a))break;if(b.test(a))break;c+="\n"+o}i||o.trim()||(i=!0),e+=h+"\n",g=g.substring(h.length+1),a=o.slice(s)}f.loose||(l?f.loose=!0:/\n *\n *$/.test(e)&&(l=!0)),this.options.gfm&&(t=/^\[[ xX]\] /.exec(c))&&(n="[ ] "!==t[0],c=c.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:e,task:!!t,checked:n,loose:!1,text:c}),f.raw+=e}f.items[f.items.length-1].raw=e.trimRight(),f.items[f.items.length-1].text=c.trimRight(),f.raw=f.raw.trimRight();var _,$=f.items.length;for(r=0;r<$;r++)this.lexer.state.top=!1,f.items[r].tokens=this.lexer.blockTokens(f.items[r].text,[]),f.loose||(_=0<(_=f.items[r].tokens.filter(e=>"space"===e.type)).length&&_.some(e=>/\n.*\n/.test(e.raw)),f.loose=_);if(f.loose)for(r=0;r<$;r++)f.items[r].loose=!0;return f}}html(e){var t,n,e=this.rules.block.html.exec(e);if(e)return t={type:"html",block:!0,raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]},this.options.sanitize&&(e=this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]),(n=t).type="paragraph",n.text=e,n.tokens=this.lexer.inline(e)),t}def(e){var t,n,s,e=this.rules.block.def.exec(e);if(e)return t=e[1].toLowerCase().replace(/\s+/g," "),n=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",s=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:n,title:s}}table(e){e=this.rules.block.table.exec(e);if(e){var i={type:"table",raw:e[0],header:x(e[1]).map(e=>({text:e})),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){let e=i.align.length,t,n,s,r;for(t=0;t({text:e}));for(e=i.header.length,n=0;n/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]):e[0]}}link(n){n=this.rules.inline.link.exec(n);if(n){var s=n[2].trim();if(!this.options.pedantic&&/^$/.test(s))return;var r=m(s.slice(0,-1),"\\");if((s.length-r.length)%2==0)return}else{var i,r=function(n,s){if(-1!==n.indexOf(s[1])){var r=n.length;let e=0,t=0;for(;t$/.test(s)?e.slice(1):e.slice(1,-1):e)&&e.replace(this.rules.inline._escapes,"$1"),title:t&&t.replace(this.rules.inline._escapes,"$1")},n[0],this.lexer)}}reflink(t,n){let s;if(s=(s=this.rules.inline.reflink.exec(t))||this.rules.inline.nolink.exec(t)){let e=(s[2]||s[1]).replace(/\s+/g," ");return(e=n[e.toLowerCase()])?b(s,e,s[0],this.lexer):{type:"text",raw:t=s[0].charAt(0),text:t}}}emStrong(r,i,e=""){let l=this.rules.inline.emStrong.lDelim.exec(r);if(l&&((!l[3]||!e.match(/[\p{L}\p{N}]/u))&&(!(l[1]||l[2]||"")||!e||this.rules.inline.punctuation.exec(e)))){var a=l[0].length-1;let e,t,n=a,s=0;var o,h,c="*"===l[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,i=i.slice(-1*r.length+a);null!=(l=c.exec(i));)if(e=l[1]||l[2]||l[3]||l[4]||l[5]||l[6])if(t=e.length,l[3]||l[4])n+=t;else if((l[5]||l[6])&&a%3&&!((a+t)%3))s+=t;else if(!(0<(n-=t)))return t=Math.min(t,t+n+s),o=r.slice(0,a+l.index+t+1),Math.min(a,t)%2?(h=o.slice(1,-1),{type:"em",raw:o,text:h,tokens:this.lexer.inlineTokens(h)}):(h=o.slice(2,-2),{type:"strong",raw:o,text:h,tokens:this.lexer.inlineTokens(h)})}}codespan(t){t=this.rules.inline.code.exec(t);if(t){let e=t[2].replace(/\n/g," ");var n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return e=u(e=n&&s?e.substring(1,e.length-1):e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}}del(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n,s){n=this.rules.inline.autolink.exec(n);if(n){let e,t;return t="@"===n[2]?"mailto:"+(e=u(this.options.mangle?s(n[1]):n[1])):e=u(n[1]),{type:"link",raw:n[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e,n){var s,r;if(s=this.rules.inline.url.exec(e)){let e,t;if("@"===s[2])e=u(this.options.mangle?n(s[0]):s[0]),t="mailto:"+e;else{for(;r=s[0],s[0]=this.rules.inline._backpedal.exec(s[0])[0],r!==s[0];);e=u(s[0]),t="www."===s[1]?"http://"+s[0]:s[0]}return{type:"link",raw:s[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t,n){t=this.rules.inline.text.exec(t);if(t){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):u(t[0]):t[0]:u(this.options.smartypants?n(t[0]):t[0]),{type:"text",raw:t[0],text:e}}}},y={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},_=(y.def=g(y.def).replace("label",y._label).replace("title",y._title).getRegex(),y.bullet=/(?:[*+-]|\d{1,9}[.)])/,y.listItemStart=g(/^( *)(bull) */).replace("bull",y.bullet).getRegex(),y.list=g(y.list).replace(/bull/g,y.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+y.def.source+")").getRegex(),y._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y._comment=/|$)/,y.html=g(y.html,"i").replace("comment",y._comment).replace("tag",y._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),y.lheading=g(y.lheading).replace(/bull/g,y.bullet).getRegex(),y.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.blockquote=g(y.blockquote).replace("paragraph",y.paragraph).getRegex(),y.normal={...y},y.gfm={...y.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},y.gfm.table=g(y.gfm.table).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.gfm.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",y.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.pedantic={...y.normal,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",y._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:f,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(y.normal._paragraph).replace("hr",y.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",y.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()},{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:f,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~",_.punctuation=g(_.punctuation,"u").replace(/punctuation/g,_._punctuation).getRegex(),_.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,_.anyPunctuation=/\\[punct]/g,_._escapes=/\\([punct])/g,_._comment=g(y._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),_.emStrong.lDelim=g(_.emStrong.lDelim,"u").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimAst=g(_.emStrong.rDelimAst,"gu").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimUnd=g(_.emStrong.rDelimUnd,"gu").replace(/punct/g,_._punctuation).getRegex(),_.anyPunctuation=g(_.anyPunctuation,"gu").replace(/punct/g,_._punctuation).getRegex(),_._escapes=g(_._escapes,"gu").replace(/punct/g,_._punctuation).getRegex(),_._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,_._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,_.autolink=g(_.autolink).replace("scheme",_._scheme).replace("email",_._email).getRegex(),_._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,_.tag=g(_.tag).replace("comment",_._comment).replace("attribute",_._attribute).getRegex(),_._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,_._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,_._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,_.link=g(_.link).replace("label",_._label).replace("href",_._href).replace("title",_._title).getRegex(),_.reflink=g(_.reflink).replace("label",_._label).replace("ref",y._label).getRegex(),_.nolink=g(_.nolink).replace("ref",y._label).getRegex(),_.reflinkSearch=g(_.reflinkSearch,"g").replace("reflink",_.reflink).replace("nolink",_.nolink).getRegex(),_.normal={..._},_.pedantic={..._.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",_._label).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",_._label).getRegex()},_.gfm={..._.normal,escape:g(_.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length));let n,e,r,i;for(;s;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(e=>!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.space(s))s=s.substring(n.raw.length),1===n.raw.length&&0{"number"==typeof(n=e.call({lexer:this},a))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r)))e=t[t.length-1],i&&"paragraph"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n),i=r.length!==s.length,s=s.substring(n.raw.length);else if(n=this.tokenizer.text(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n);else if(s){var l="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(s,t=[]){let n,e,r,i=s,l,a,o;if(this.tokens.links){var h=Object.keys(this.tokens.links);if(0!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.escape(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.link(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(s,this.tokens.links))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(s,i,o))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(s,$))s=s.substring(n.raw.length),t.push(n);else if(!this.state.inLink&&(n=this.tokenizer.url(s,$)))s=s.substring(n.raw.length),t.push(n);else{if(r=s,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const p=s.slice(1);let n;this.options.extensions.startInline.forEach(e=>{"number"==typeof(n=e.call({lexer:this},p))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(n=this.tokenizer.inlineText(r,V))s=s.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),a=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(s){var c="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}return t}},S=class{constructor(e){this.options=e||l}code(e,t,n){var s,t=(t||"").match(/\S*/)[0];return this.options.highlight&&null!=(s=this.options.highlight(e,t))&&s!==e&&(n=!0,e=s),e=e.replace(/\n$/,"")+"\n",t?'
    '+(n?e:u(e,!0))+"
    \n":"
    "+(n?e:u(e,!0))+"
    \n"}blockquote(e){return`
    ${e}
    `}html(e,t){return e}heading(e,t,n,s){return this.options.headerIds?`${e} `:`${e} @@ -12,4 +12,4 @@ ${e}
    `}table(e,t){return"\n\n"+e+"\n"+(t=t&&`${t}`)+"
    \n"}tablerow(e){return` ${e} `}tablecell(e,t){var n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+` -`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s='
    "}image(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s=`${n}":">"}text(e){return e}},T=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}},R=class{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,s=0;if(this.seen.hasOwnProperty(n))for(s=this.seen[e];s++,n=e+"-"+s,this.seen.hasOwnProperty(n););return t||(this.seen[e]=s,this.seen[n]=0),n}slug(e,t={}){e=this.serialize(e);return this.getNextSafeSlug(e,t.dryrun)}},A=class{constructor(e){this.options=e||l,this.options.renderer=this.options.renderer||new S,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new T,this.slugger=new R}static parse(e,t){return new A(t).parse(e)}static parseInline(e,t){return new A(t).parseInline(e)}parse(e,t=!0){let n="",s,r,i,l,a,o,h,c,p,u,g,d,k,f,x,m,b,w,y;var _=e.length;for(s=0;s<_;s++)if(u=e[s],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(!1!==(y=this.options.extensions.renderers[u.type].call({parser:this},u))||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(u.type)))n+=y||"";else switch(u.type){case"space":continue;case"hr":n+=this.renderer.hr();continue;case"heading":n+=this.renderer.heading(this.parseInline(u.tokens),u.depth,z(this.parseInline(u.tokens,this.textRenderer)),this.slugger);continue;case"code":n+=this.renderer.code(u.text,u.lang,!!u.escaped);continue;case"table":for(c="",h="",l=u.header.length,r=0;r{n=n.concat(this.walkTokens(s[e],t))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,t)))}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{var e={...n};if(e.async=this.defaults.async||e.async||!1,n.extensions&&(n.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){const s=t.renderers[n.name];s?t.renderers[n.name]=function(...e){let t=n.renderer.apply(this,e);return t=!1===t?s.apply(this,e):t}:t.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||"block"!==n.level&&"inline"!==n.level)throw new Error("extension level must be 'block' or 'inline'");t[n.level]?t[n.level].unshift(n.tokenizer):t[n.level]=[n.tokenizer],n.start&&("block"===n.level?t.startBlock?t.startBlock.push(n.start):t.startBlock=[n.start]:"inline"===n.level&&(t.startInline?t.startInline.push(n.start):t.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(t.childTokens[n.name]=n.childTokens)}),e.extensions=t),n.renderer){const s=this.defaults.renderer||new S(this.defaults);for(const r in n.renderer){const i=s[r];s[r]=(...e)=>{let t=n.renderer[r].apply(s,e);return t=!1===t?i.apply(s,e):t}}e.renderer=s}if(n.tokenizer){const l=this.defaults.tokenizer||new w(this.defaults);for(const a in n.tokenizer){const o=l[a];l[a]=(...e)=>{let t=n.tokenizer[a].apply(l,e);return t=!1===t?o.apply(l,e):t}}e.tokenizer=l}if(n.hooks){const h=this.defaults.hooks||new I;for(const c in n.hooks){const p=h[c];I.passThroughHooks.has(c)?h[c]=e=>{return this.defaults.async?Promise.resolve(n.hooks[c].call(h,e)).then(e=>p.call(h,e)):(e=n.hooks[c].call(h,e),p.call(h,e))}:h[c]=(...e)=>{let t=n.hooks[c].apply(h,e);return t=!1===t?p.apply(h,e):t}}e.hooks=h}if(n.walkTokens){const u=this.defaults.walkTokens;e.walkTokens=function(e){let t=[];return t.push(n.walkTokens.call(this,e)),t=u?t.concat(u.call(this,e)):t}}this.defaults={...this.defaults,...e}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}}),P=new WeakSet,K=function(h,c){return(t,e,r)=>{"function"==typeof e&&(r=e,e=null);var n,e={...e};const i={...this.defaults,...e},l=p(this,Y,ee).call(this,!!i.silent,!!i.async,r);if(null==t)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(e=i,n=r,e&&!e.silent&&(n&&console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async"),(e.sanitize||e.sanitizer)&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"),!e.highlight&&"language-"===e.langPrefix||console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight."),e.mangle&&console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`."),e.baseUrl&&console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url."),e.smartypants&&console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants."),e.xhtml&&console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml."),e.headerIds||e.headerPrefix)&&console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`."),i.hooks&&(i.hooks.options=i),r){const a=i.highlight;let n;try{i.hooks&&(t=i.hooks.preprocess(t)),n=h(t,i)}catch(e){return l(e)}const o=t=>{let e;if(!t)try{i.walkTokens&&this.walkTokens(n,i.walkTokens),e=c(n,i),i.hooks&&(e=i.hooks.postprocess(e))}catch(e){t=e}return i.highlight=a,t?l(t):r(null,e)};if(!a||a.length<3)return o();if(delete i.highlight,!n.length)return o();let s=0;this.walkTokens(n,n=>{"code"===n.type&&(s++,setTimeout(()=>{a(n.text,n.lang,(e,t)=>{if(e)return o(e);null!=t&&t!==n.text&&(n.text=t,n.escaped=!0),0===--s&&o()})},0))}),void(0===s&&o())}else{if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>h(e,i)).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>c(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(l);try{i.hooks&&(t=i.hooks.preprocess(t));var s=h(t,i);i.walkTokens&&this.walkTokens(s,i.walkTokens);let e=c(s,i);return e=i.hooks?i.hooks.postprocess(e):e}catch(e){return l(e)}}}},Y=new WeakSet,ee=function(n,s,r){return e=>{var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n)return t="

    An error occurred:

    "+u(e.message+"",!0)+"
    ",s?Promise.resolve(t):r?void r(null,t):t;if(s)return Promise.reject(e);if(!r)throw e;r(e)}},E=new J;function O(e,t,n){return E.parse(e,t,n)}O.options=O.setOptions=function(e){return E.setOptions(e),a(O.defaults=E.defaults),O},O.getDefaults=i,O.defaults=l,O.use=function(...e){return E.use(...e),a(O.defaults=E.defaults),O},O.walkTokens=function(e,t){return E.walkTokens(e,t)},O.parseInline=E.parseInline,O.Parser=A,O.parser=A.parse,O.Renderer=S,O.TextRenderer=T,O.Lexer=v,O.lexer=v.lex,O.Tokenizer=w,O.Slugger=R,O.Hooks=I;var te=(O.parse=O).options,ne=O.setOptions,se=O.use,re=O.walkTokens,ie=O.parseInline,le=O,ae=A.parse,oe=v.lex,f=s,Z=t({},"__esModule",{value:!0}),q=f,he=void 0,ce=void 0;if(q&&"object"==typeof q||"function"==typeof q)for(let e of L(q))D.call(Z,e)||e===he||t(Z,e,{get:()=>q[e],enumerable:!(ce=j(q,e))||ce.enumerable});return Z})(); \ No newline at end of file +`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s='
    "}image(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s=`${n}":">"}text(e){return e}},T=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}},R=class{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,s=0;if(this.seen.hasOwnProperty(n))for(s=this.seen[e];s++,n=e+"-"+s,this.seen.hasOwnProperty(n););return t||(this.seen[e]=s,this.seen[n]=0),n}slug(e,t={}){e=this.serialize(e);return this.getNextSafeSlug(e,t.dryrun)}},A=class{constructor(e){this.options=e||l,this.options.renderer=this.options.renderer||new S,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new T,this.slugger=new R}static parse(e,t){return new A(t).parse(e)}static parseInline(e,t){return new A(t).parseInline(e)}parse(e,t=!0){let n="",s,r,i,l,a,o,h,c,p,u,g,d,k,f,x,m,b,w,y;var _=e.length;for(s=0;s<_;s++)if(u=e[s],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(!1!==(y=this.options.extensions.renderers[u.type].call({parser:this},u))||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(u.type)))n+=y||"";else switch(u.type){case"space":continue;case"hr":n+=this.renderer.hr();continue;case"heading":n+=this.renderer.heading(this.parseInline(u.tokens),u.depth,z(this.parseInline(u.tokens,this.textRenderer)),this.slugger);continue;case"code":n+=this.renderer.code(u.text,u.lang,!!u.escaped);continue;case"table":for(c="",h="",l=u.header.length,r=0;r{n=n.concat(this.walkTokens(s[e],t))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,t)))}return n}use(...e){const m=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{var e={...n};if(e.async=this.defaults.async||e.async||!1,n.extensions&&(n.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){const s=m.renderers[n.name];s?m.renderers[n.name]=function(...e){let t=n.renderer.apply(this,e);return t=!1===t?s.apply(this,e):t}:m.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||"block"!==n.level&&"inline"!==n.level)throw new Error("extension level must be 'block' or 'inline'");m[n.level]?m[n.level].unshift(n.tokenizer):m[n.level]=[n.tokenizer],n.start&&("block"===n.level?m.startBlock?m.startBlock.push(n.start):m.startBlock=[n.start]:"inline"===n.level&&(m.startInline?m.startInline.push(n.start):m.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(m.childTokens[n.name]=n.childTokens)}),e.extensions=m),n.renderer){const i=this.defaults.renderer||new S(this.defaults);for(const l in n.renderer){const a=n.renderer[l];var t=l;const o=i[t];i[t]=(...e)=>{let t=a.apply(i,e);return t=!1===t?o.apply(i,e):t}}e.renderer=i}if(n.tokenizer){const h=this.defaults.tokenizer||new w(this.defaults);for(const c in n.tokenizer){const p=n.tokenizer[c];var s=c;const u=h[s];h[s]=(...e)=>{let t=p.apply(h,e);return t=!1===t?u.apply(h,e):t}}e.tokenizer=h}if(n.hooks){const g=this.defaults.hooks||new I;for(const d in n.hooks){const k=n.hooks[d];var r=d;const f=g[r];I.passThroughHooks.has(d)?g[r]=e=>{return this.defaults.async?Promise.resolve(k.call(g,e)).then(e=>f.call(g,e)):(e=k.call(g,e),f.call(g,e))}:g[r]=(...e)=>{let t=k.apply(g,e);return t=!1===t?f.apply(g,e):t}}e.hooks=g}if(n.walkTokens){const x=this.defaults.walkTokens;e.walkTokens=function(e){let t=[];return t.push(n.walkTokens.call(this,e)),t=x?t.concat(x.call(this,e)):t}}this.defaults={...this.defaults,...e}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}}),P=new WeakSet,K=function(h,c){return(t,e,r)=>{"function"==typeof e&&(r=e,e=null);var n,e={...e};const i={...this.defaults,...e},l=p(this,Y,ee).call(this,!!i.silent,!!i.async,r);if(null==t)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(e=i,n=r,e&&!e.silent&&(n&&console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async"),(e.sanitize||e.sanitizer)&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"),!e.highlight&&"language-"===e.langPrefix||console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight."),e.mangle&&console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`."),e.baseUrl&&console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url."),e.smartypants&&console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants."),e.xhtml&&console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml."),e.headerIds||e.headerPrefix)&&console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`."),i.hooks&&(i.hooks.options=i),r){const a=i.highlight;let n;try{i.hooks&&(t=i.hooks.preprocess(t)),n=h(t,i)}catch(e){return l(e)}const o=t=>{let e;if(!t)try{i.walkTokens&&this.walkTokens(n,i.walkTokens),e=c(n,i),i.hooks&&(e=i.hooks.postprocess(e))}catch(e){t=e}return i.highlight=a,t?l(t):r(null,e)};if(!a||a.length<3)return o();if(delete i.highlight,!n.length)return o();let s=0;this.walkTokens(n,n=>{"code"===n.type&&(s++,setTimeout(()=>{a(n.text,n.lang,(e,t)=>{if(e)return o(e);null!=t&&t!==n.text&&(n.text=t,n.escaped=!0),0===--s&&o()})},0))}),void(0===s&&o())}else{if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>h(e,i)).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>c(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(l);try{i.hooks&&(t=i.hooks.preprocess(t));var s=h(t,i);i.walkTokens&&this.walkTokens(s,i.walkTokens);let e=c(s,i);return e=i.hooks?i.hooks.postprocess(e):e}catch(e){return l(e)}}}},Y=new WeakSet,ee=function(n,s,r){return e=>{var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n)return t="

    An error occurred:

    "+u(e.message+"",!0)+"
    ",s?Promise.resolve(t):r?void r(null,t):t;if(s)return Promise.reject(e);if(!r)throw e;r(e)}},E=new J;function O(e,t,n){return E.parse(e,t,n)}O.options=O.setOptions=function(e){return E.setOptions(e),a(O.defaults=E.defaults),O},O.getDefaults=i,O.defaults=l,O.use=function(...e){return E.use(...e),a(O.defaults=E.defaults),O},O.walkTokens=function(e,t){return E.walkTokens(e,t)},O.parseInline=E.parseInline,O.Parser=A,O.parser=A.parse,O.Renderer=S,O.TextRenderer=T,O.Lexer=v,O.lexer=v.lex,O.Tokenizer=w,O.Slugger=R,O.Hooks=I;var te=(O.parse=O).options,ne=O.setOptions,se=O.use,re=O.walkTokens,ie=O.parseInline,le=O,ae=A.parse,oe=v.lex,f=s,Z=t({},"__esModule",{value:!0}),q=f,he=void 0,ce=void 0;if(q&&"object"==typeof q||"function"==typeof q)for(let e of L(q))D.call(Z,e)||e===he||t(Z,e,{get:()=>q[e],enumerable:!(ce=j(q,e))||ce.enumerable});return Z})(); \ No newline at end of file diff --git a/src/Instance.ts b/src/Instance.ts index 172463c383..75dbb8b1cb 100644 --- a/src/Instance.ts +++ b/src/Instance.ts @@ -62,6 +62,7 @@ export class Marked { default: { if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions this.defaults.extensions.childTokens[token.type].forEach((childTokens) => { + // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure values = values.concat(this.walkTokens(token[childTokens], callback)); }); } else if (token.tokens) { @@ -140,10 +141,13 @@ export class Marked { if (pack.renderer) { const renderer = this.defaults.renderer || new _Renderer(this.defaults); for (const prop in pack.renderer) { - const prevRenderer = renderer[prop]; + const rendererFunc = pack.renderer[prop as keyof MarkedExtension["renderer"]] as Function; + const rendererKey = prop as keyof _Renderer + const prevRenderer = renderer[rendererKey] as Function; // Replace renderer with func to run extension, but fall back if false - renderer[prop] = (...args: unknown[]) => { - let ret = pack.renderer![prop].apply(renderer, args); + renderer[rendererKey] = (...args: unknown[]) => { + + let ret = rendererFunc.apply(renderer, args); if (ret === false) { ret = prevRenderer.apply(renderer, args); } @@ -155,10 +159,12 @@ export class Marked { if (pack.tokenizer) { const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); for (const prop in pack.tokenizer) { - const prevTokenizer = tokenizer[prop]; + const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension["tokenizer"]] as Function; + const tokenizerKey = prop as keyof _Tokenizer + const prevTokenizer = tokenizer[tokenizerKey] as Function; // Replace tokenizer with func to run extension, but fall back if false - tokenizer[prop] = (...args: unknown[]) => { - let ret = pack.tokenizer![prop].apply(tokenizer, args); + tokenizer[tokenizerKey] = (...args: unknown[]) => { + let ret = tokenizerFunc.apply(tokenizer, args); if (ret === false) { ret = prevTokenizer.apply(tokenizer, args); } @@ -172,21 +178,23 @@ export class Marked { if (pack.hooks) { const hooks = this.defaults.hooks || new _Hooks(); for (const prop in pack.hooks) { - const prevHook = hooks[prop]; + const hooksFunc = pack.hooks[prop as keyof MarkedExtension["hooks"]] as Function; + const hooksKey = prop as keyof _Hooks + const prevHook = hooks[hooksKey] as Function; if (_Hooks.passThroughHooks.has(prop)) { - hooks[prop as 'preprocess' | 'postprocess'] = (arg: string | undefined) => { + hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => { if (this.defaults.async) { - return Promise.resolve(pack.hooks![prop].call(hooks, arg)).then(ret => { + return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { return prevHook.call(hooks, ret); }); } - const ret = pack.hooks![prop].call(hooks, arg); + const ret = hooksFunc.call(hooks, arg); return prevHook.call(hooks, ret); }; } else { - hooks[prop] = (...args) => { - let ret = pack.hooks![prop].apply(hooks, args); + hooks[hooksKey] = (...args: unknown[]) => { + let ret = hooksFunc.apply(hooks, args); if (ret === false) { ret = prevHook.apply(hooks, args); } @@ -216,7 +224,7 @@ export class Marked { return this; } - setOptions(opt) { + setOptions(opt: MarkedOptions) { this.defaults = { ...this.defaults, ...opt }; return this; } diff --git a/src/Lexer.ts b/src/Lexer.ts index 3e5632af22..3814f8655a 100644 --- a/src/Lexer.ts +++ b/src/Lexer.ts @@ -1,7 +1,7 @@ import { _Tokenizer } from './Tokenizer.ts'; import { _defaults } from './defaults.ts'; import { block, inline } from './rules.ts'; -import type { Token, TokensList } from './Tokens.ts'; +import type { Token, TokensList, Tokens } from './Tokens.ts'; import type { MarkedOptions, TokenizerExtension } from './MarkedOptions.ts'; import type { Rules } from './rules.ts'; @@ -154,7 +154,10 @@ export class _Lexer { }); } - let token, lastToken, cutSrc, lastParagraphClipped; + let token: Tokens.Generic | undefined; + let lastToken; + let cutSrc; + let lastParagraphClipped; while (src) { if (this.options.extensions diff --git a/src/MarkedOptions.ts b/src/MarkedOptions.ts index c83eb58247..939673a3a7 100644 --- a/src/MarkedOptions.ts +++ b/src/MarkedOptions.ts @@ -17,7 +17,7 @@ export interface TokenizerExtension { name: string; level: 'block' | 'inline'; start?: ((this: TokenizerThis, src: string) => number | void) | undefined; - tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | void; + tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; childTokens?: string[] | undefined; } diff --git a/src/Parser.ts b/src/Parser.ts index ca3187fd6a..107497b8a4 100644 --- a/src/Parser.ts +++ b/src/Parser.ts @@ -89,9 +89,9 @@ export class _Parser { } case 'heading': { out += this.renderer.heading( - this.parseInline(token.tokens) as string, + this.parseInline(token.tokens!), token.depth, - unescape(this.parseInline(token.tokens, this.textRenderer) as string), + unescape(this.parseInline(token.tokens!, this.textRenderer)), this.slugger); continue; } @@ -135,7 +135,7 @@ export class _Parser { continue; } case 'blockquote': { - body = this.parse(token.tokens)!; + body = this.parse(token.tokens!); out += this.renderer.blockquote(body); continue; } @@ -183,13 +183,13 @@ export class _Parser { continue; } case 'paragraph': { - out += this.renderer.paragraph(this.parseInline(token.tokens)!); + out += this.renderer.paragraph(this.parseInline(token.tokens!)!); continue; } case 'text': { body = token.tokens ? this.parseInline(token.tokens) : token.text; while (i + 1 < l && tokens[i + 1].type === 'text') { - token = tokens[++i]; + token = tokens[++i] as Tokens.Text; body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text); } out += top ? this.renderer.paragraph(body!) : body; @@ -244,7 +244,7 @@ export class _Parser { break; } case 'link': { - out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer)!); + out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!); break; } case 'image': { @@ -252,11 +252,11 @@ export class _Parser { break; } case 'strong': { - out += renderer.strong(this.parseInline(token.tokens, renderer)!); + out += renderer.strong(this.parseInline(token.tokens!, renderer)!); break; } case 'em': { - out += renderer.em(this.parseInline(token.tokens, renderer)!); + out += renderer.em(this.parseInline(token.tokens!, renderer)!); break; } case 'codespan': { @@ -268,7 +268,7 @@ export class _Parser { break; } case 'del': { - out += renderer.del(this.parseInline(token.tokens, renderer)!); + out += renderer.del(this.parseInline(token.tokens!, renderer)!); break; } case 'text': { diff --git a/src/Tokenizer.ts b/src/Tokenizer.ts index 2161fb98e5..d45f55bb41 100644 --- a/src/Tokenizer.ts +++ b/src/Tokenizer.ts @@ -407,8 +407,7 @@ export class _Tokenizer { if (cap) { const item: Tokens.Table = { type: 'table', - // splitCells expects a number as second argument - // @ts-expect-error + raw: cap[0], header: splitCells(cap[1]).map(c => { return { text: c }; }), @@ -417,8 +416,6 @@ export class _Tokenizer { }; if (item.header.length === item.align.length) { - item.raw = cap[0]; - let l = item.align.length; let i, j, k, row; for (i = 0; i < l; i++) { diff --git a/src/Tokens.ts b/src/Tokens.ts index 61514bd97d..466ec2311c 100644 --- a/src/Tokens.ts +++ b/src/Tokens.ts @@ -19,7 +19,8 @@ export type Token = (Tokens.Space | Tokens.Em | Tokens.Codespan | Tokens.Br - | Tokens.Del) & { loose?: boolean, tokens?: Token[] }; + | Tokens.Del + | Tokens.Generic) & { loose?: boolean, tokens?: Token[] }; export namespace Tokens { export interface Space { @@ -46,7 +47,7 @@ export namespace Tokens { export interface Table { type: 'table'; - raw?: string; + raw: string; align: Array<'center' | 'left' | 'right' | null>; header: TableCell[]; rows: TableCell[][]; diff --git a/src/helpers.ts b/src/helpers.ts index 7f19bfd5fb..972d479d5d 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -9,7 +9,7 @@ const escapeTest = /[&<>"']/; const escapeReplace = new RegExp(escapeTest.source, 'g'); const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); -const escapeReplacements = { +const escapeReplacements: {[index: string]: string} = { '&': '&', '<': '<', '>': '>', @@ -131,7 +131,7 @@ export function resolveUrl(base: string, href: string) { export const noopTest = { exec: () => null }; -export function splitCells(tableRow: string, count: number) { +export function splitCells(tableRow: string, count?: number) { // ensure that every cell-delimiting pipe has a space // before it to distinguish it from an escaped pipe const row = tableRow.replace(/\|/g, (match, offset, str) => { @@ -158,10 +158,12 @@ export function splitCells(tableRow: string, count: number) { cells.pop(); } - if (cells.length > count) { - cells.splice(count); - } else { - while (cells.length < count) cells.push(''); + if (count) { + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) cells.push(''); + } } for (; i < cells.length; i++) { diff --git a/test/types/marked.ts b/test/types/marked.ts index 3c2ed744c9..507d53f89a 100644 --- a/test/types/marked.ts +++ b/test/types/marked.ts @@ -186,7 +186,7 @@ marked.use({ } }); -interface NameToken { +interface NameToken extends Tokens.Generic { type: 'name'; raw: string; text: string; @@ -198,7 +198,7 @@ const tokenizerExtension: TokenizerExtension = { name: 'name', level: 'block', start: (src: string) => src.match(/name/)?.index, - tokenizer(src: string): NameToken | void { + tokenizer(src: string): NameToken | undefined { if (src === 'name') { const token: NameToken = { type: 'name', diff --git a/tsconfig.json b/tsconfig.json index 79ada4bcf2..c2987bc235 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,6 @@ "noEmit": true, "allowSyntheticDefaultImports": true, "moduleResolution": "NodeNext", - "noImplicitAny": false, "allowImportingTsExtensions": true }, "include": [ From 6e714c3b144adb4aa43edf96cd9e2bda812cb9d7 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 29 Jul 2023 01:55:05 -0600 Subject: [PATCH 2/6] fix lint --- lib/marked.cjs | 14 ++++++++------ lib/marked.cjs.map | 2 +- lib/marked.d.ts | 15 ++++++++------- lib/marked.esm.js | 14 ++++++++------ lib/marked.esm.js.map | 2 +- lib/marked.umd.js | 14 ++++++++------ lib/marked.umd.js.map | 2 +- marked.min.js | 4 ++-- src/Hooks.ts | 4 ++-- src/Instance.ts | 40 +++++++++++++++++++++------------------- src/MarkedOptions.ts | 10 ++++++---- 11 files changed, 66 insertions(+), 55 deletions(-) diff --git a/lib/marked.cjs b/lib/marked.cjs index fd1e51b2ff..aeebaf5608 100644 --- a/lib/marked.cjs +++ b/lib/marked.cjs @@ -221,11 +221,13 @@ function splitCells(tableRow, count) { if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); } - if (cells.length > count) { - cells.splice(count); - } else { - while (cells.length < count) - cells.push(""); + if (count) { + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) + cells.push(""); + } } for (; i < cells.length; i++) { cells[i] = cells[i].trim().replace(/\\\|/g, "|"); @@ -2033,7 +2035,7 @@ var Marked = class { if (ret === false) { ret = prevRenderer.apply(renderer, args2); } - return ret; + return ret || ""; }; } opts.renderer = renderer; diff --git a/lib/marked.cjs.map b/lib/marked.cjs.map index 955bf6b5ea..28339db66f 100644 --- a/lib/marked.cjs.map +++ b/lib/marked.cjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: any) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension[\"renderer\"]] as Function;\n const rendererKey = prop as keyof _Renderer\n const prevRenderer = renderer[rendererKey] as Function;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension[\"tokenizer\"]] as Function;\n const tokenizerKey = prop as keyof _Tokenizer\n const prevTokenizer = tokenizer[tokenizerKey] as Function;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension[\"hooks\"]] as Function;\n const hooksKey = prop as keyof _Hooks\n const prevHook = hooks[hooksKey] as Function;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.d.ts b/lib/marked.d.ts index 72a5e97c5e..800dbb5455 100644 --- a/lib/marked.d.ts +++ b/lib/marked.d.ts @@ -301,9 +301,10 @@ interface TokenizerExtension { interface RendererThis { parser: _Parser; } +type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; interface RendererExtension { name: string; - renderer: (this: RendererThis, token: Tokens.Generic) => string | false | undefined; + renderer: RendererExtensionFunction; } type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); type RendererApi = Omit<_Renderer, 'constructor' | 'options'>; @@ -360,8 +361,8 @@ interface MarkedExtension { * postprocess is called to process html after marked has finished parsing. */ hooks?: { - preprocess: (markdown: string) => string; - postprocess: (html: string | undefined) => string | undefined; + preprocess: (markdown: string) => string | Promise; + postprocess: (html: string) => string | Promise; options?: MarkedOptions; } | null; /** @@ -446,7 +447,7 @@ interface MarkedOptions extends Omit string | false | undefined>; + renderers: Record; childTokens: Record; block: any[]; inline: any[]; @@ -521,11 +522,11 @@ declare class _Hooks { /** * Process markdown before marked */ - preprocess(markdown: string): string; + preprocess(markdown: string): string | Promise; /** * Process HTML after marked is finished */ - postprocess(html: string | undefined): string | undefined; + postprocess(html: string): string | Promise; } type ResultCallback$1 = (error: Error | null, parseResult?: string) => undefined | void; @@ -621,4 +622,4 @@ declare const parse: typeof marked; declare const parser: typeof _Parser.parse; declare const lexer: typeof _Lexer.lex; -export { _Hooks as Hooks, _Lexer as Lexer, Links, Marked, MarkedExtension, MarkedOptions, _Parser as Parser, _Renderer as Renderer, RendererExtension, RendererThis, ResultCallback, Rule, Rules, _Slugger as Slugger, SluggerOptions, _TextRenderer as TextRenderer, Token, _Tokenizer as Tokenizer, TokenizerAndRendererExtension, TokenizerExtension, TokenizerThis, Tokens, TokensList, block, _defaults as defaults, _getDefaults as getDefaults, inline, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; +export { _Hooks as Hooks, _Lexer as Lexer, Links, Marked, MarkedExtension, MarkedOptions, _Parser as Parser, _Renderer as Renderer, RendererExtension, RendererExtensionFunction, RendererThis, ResultCallback, Rule, Rules, _Slugger as Slugger, SluggerOptions, _TextRenderer as TextRenderer, Token, _Tokenizer as Tokenizer, TokenizerAndRendererExtension, TokenizerExtension, TokenizerThis, Tokens, TokensList, block, _defaults as defaults, _getDefaults as getDefaults, inline, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; diff --git a/lib/marked.esm.js b/lib/marked.esm.js index 7ade98755a..1519bb4afc 100644 --- a/lib/marked.esm.js +++ b/lib/marked.esm.js @@ -178,11 +178,13 @@ function splitCells(tableRow, count) { if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); } - if (cells.length > count) { - cells.splice(count); - } else { - while (cells.length < count) - cells.push(""); + if (count) { + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) + cells.push(""); + } } for (; i < cells.length; i++) { cells[i] = cells[i].trim().replace(/\\\|/g, "|"); @@ -1990,7 +1992,7 @@ var Marked = class { if (ret === false) { ret = prevRenderer.apply(renderer, args2); } - return ret; + return ret || ""; }; } opts.renderer = renderer; diff --git a/lib/marked.esm.js.map b/lib/marked.esm.js.map index e1aa0beecc..65eefa083e 100644 --- a/lib/marked.esm.js.map +++ b/lib/marked.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: any) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension[\"renderer\"]] as Function;\n const rendererKey = prop as keyof _Renderer\n const prevRenderer = renderer[rendererKey] as Function;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension[\"tokenizer\"]] as Function;\n const tokenizerKey = prop as keyof _Tokenizer\n const prevTokenizer = tokenizer[tokenizerKey] as Function;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension[\"hooks\"]] as Function;\n const hooksKey = prop as keyof _Hooks\n const prevHook = hooks[hooksKey] as Function;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.umd.js b/lib/marked.umd.js index 3fe52cdc79..d7a4ee137b 100644 --- a/lib/marked.umd.js +++ b/lib/marked.umd.js @@ -221,11 +221,13 @@ var marked = (() => { if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); } - if (cells.length > count) { - cells.splice(count); - } else { - while (cells.length < count) - cells.push(""); + if (count) { + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) + cells.push(""); + } } for (; i < cells.length; i++) { cells[i] = cells[i].trim().replace(/\\\|/g, "|"); @@ -2033,7 +2035,7 @@ ${content} if (ret === false) { ret = prevRenderer.apply(renderer, args2); } - return ret; + return ret || ""; }; } opts.renderer = renderer; diff --git a/lib/marked.umd.js.map b/lib/marked.umd.js.map index bd5215026a..f6b634b2f2 100644 --- a/lib/marked.umd.js.map +++ b/lib/marked.umd.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: any) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string | undefined) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension[\"renderer\"]] as Function;\n const rendererKey = prop as keyof _Renderer\n const prevRenderer = renderer[rendererKey] as Function;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension[\"tokenizer\"]] as Function;\n const tokenizerKey = prop as keyof _Tokenizer\n const prevTokenizer = tokenizer[tokenizerKey] as Function;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension[\"hooks\"]] as Function;\n const hooksKey = prop as keyof _Hooks\n const prevHook = hooks[hooksKey] as Function;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/marked.min.js b/marked.min.js index eb5a506d2f..0b365c6f37 100644 --- a/marked.min.js +++ b/marked.min.js @@ -3,7 +3,7 @@ * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed) * https://github.com/markedjs/marked */ -"use strict";var marked=(()=>{var e,t=Object.defineProperty,j=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,D=Object.prototype.hasOwnProperty,n=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},p=(e,t,n)=>{var s="access private method";if(t.has(e))return n;throw TypeError("Cannot "+s)},s={},C=s,r={Hooks:()=>I,Lexer:()=>v,Marked:()=>J,Parser:()=>A,Renderer:()=>S,Slugger:()=>R,TextRenderer:()=>T,Tokenizer:()=>w,defaults:()=>l,getDefaults:()=>i,lexer:()=>oe,marked:()=>O,options:()=>te,parse:()=>le,parseInline:()=>ie,parser:()=>ae,setOptions:()=>ne,use:()=>se,walkTokens:()=>re};for(e in r)t(C,e,{get:r[e],enumerable:!0});function i(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var l=i();function a(e){l=e}var o=/[&<>"']/,B=new RegExp(o.source,"g"),h=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,U=new RegExp(h.source,"g"),Q={"&":"&","<":"<",">":">",'"':""","'":"'"},c=e=>Q[e];function u(e,t){if(t){if(o.test(e))return e.replace(B,c)}else if(h.test(e))return e.replace(U,c);return e}var M=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function z(e){return e.replace(M,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var N=/(^|[^\[])\^/g;function g(n,e){n="string"==typeof n?n:n.source,e=e||"";const s={replace:(e,t)=>(t=(t="object"==typeof t&&"source"in t?t.source:t).replace(N,"$1"),n=n.replace(e,t),s),getRegex:()=>new RegExp(n,e)};return s}var H=/[^\w:]/g,F=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function d(e,t,n){if(e){let e;try{e=decodeURIComponent(z(n)).replace(H,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}var s;t&&!F.test(n)&&(e=n,k[" "+(t=t)]||(W.test(t)?k[" "+t]=t+"/":k[" "+t]=m(t,"/",!0)),s=-1===(t=k[" "+t]).indexOf(":"),n="//"===e.substring(0,2)?s?e:t.replace(X,"$1")+e:"/"===e.charAt(0)?s?e:t.replace(G,"$1")+e:t+e);try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var k={},W=/^[^:]+:\/*[^/]*$/,X=/^([^:]+:)[\s\S]*$/,G=/^([^:]+:\/*[^/]*)[\s\S]*$/;var f={exec:()=>null};function x(e,t){var n=e.replace(/\|/g,(e,t,n)=>{let s=!1,r=t;for(;0<=--r&&"\\"===n[r];)s=!s;return s?"|":" |"}).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),0t)n.splice(t);else for(;n.length{var t=e.match(/^\s+/);return null!==t&&([t]=t,t.length>=n.length)?e.slice(n.length):e}).join("\n")}(t=e[0],e[3]||""),{type:"code",raw:t,lang:e[2]&&e[2].trim().replace(this.rules.inline._escapes,"$1"),text:n}}heading(t){var n,t=this.rules.block.heading.exec(t);if(t){let e=t[2].trim();return/#$/.test(e)&&(n=m(e,"#"),!this.options.pedantic&&n&&!/ $/.test(n)||(e=n.trim())),{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}}blockquote(e){var t,n,s,e=this.rules.block.blockquote.exec(e);if(e)return t=e[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top,this.lexer.state.top=!0,s=this.lexer.blockTokens(t),this.lexer.state.top=n,{type:"blockquote",raw:e[0],tokens:s,text:t}}list(g){let d=this.rules.block.list.exec(g);if(d){let e,t,n,s,r,i,l,a,o,h,c,p,u=d[1].trim();for(var k=1" ".repeat(3*e.length)),o=g.split("\n",1)[0],this.options.pedantic?(s=2,c=a.trimLeft()):(s=4<(s=d[2].search(/[^ ]/))?1:s,c=a.slice(s),s+=d[1].length),i=!1,!a&&/^ *$/.test(o)&&(e+=o+"\n",g=g.substring(o.length+1),p=!0),!p)for(var m=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),w=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),y=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);g&&(h=g.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!w.test(o))&&!y.test(o)&&!m.test(o)&&!b.test(g);){if(o.search(/[^ ]/)>=s||!o.trim())c+="\n"+o.slice(s);else{if(i)break;if(4<=a.search(/[^ ]/))break;if(w.test(a))break;if(y.test(a))break;if(b.test(a))break;c+="\n"+o}i||o.trim()||(i=!0),e+=h+"\n",g=g.substring(h.length+1),a=o.slice(s)}f.loose||(l?f.loose=!0:/\n *\n *$/.test(e)&&(l=!0)),this.options.gfm&&(t=/^\[[ xX]\] /.exec(c))&&(n="[ ] "!==t[0],c=c.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:e,task:!!t,checked:n,loose:!1,text:c}),f.raw+=e}f.items[f.items.length-1].raw=e.trimRight(),f.items[f.items.length-1].text=c.trimRight(),f.raw=f.raw.trimRight();var _,$=f.items.length;for(r=0;r<$;r++)this.lexer.state.top=!1,f.items[r].tokens=this.lexer.blockTokens(f.items[r].text,[]),f.loose||(_=0<(_=f.items[r].tokens.filter(e=>"space"===e.type)).length&&_.some(e=>/\n.*\n/.test(e.raw)),f.loose=_);if(f.loose)for(r=0;r<$;r++)f.items[r].loose=!0;return f}}html(e){var t,n,e=this.rules.block.html.exec(e);if(e)return t={type:"html",block:!0,raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]},this.options.sanitize&&(e=this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]),(n=t).type="paragraph",n.text=e,n.tokens=this.lexer.inline(e)),t}def(e){var t,n,s,e=this.rules.block.def.exec(e);if(e)return t=e[1].toLowerCase().replace(/\s+/g," "),n=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",s=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:n,title:s}}table(e){e=this.rules.block.table.exec(e);if(e){var i={type:"table",raw:e[0],header:x(e[1]).map(e=>({text:e})),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){let e=i.align.length,t,n,s,r;for(t=0;t({text:e}));for(e=i.header.length,n=0;n/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]):e[0]}}link(n){n=this.rules.inline.link.exec(n);if(n){var s=n[2].trim();if(!this.options.pedantic&&/^$/.test(s))return;var r=m(s.slice(0,-1),"\\");if((s.length-r.length)%2==0)return}else{var i,r=function(n,s){if(-1!==n.indexOf(s[1])){var r=n.length;let e=0,t=0;for(;t$/.test(s)?e.slice(1):e.slice(1,-1):e)&&e.replace(this.rules.inline._escapes,"$1"),title:t&&t.replace(this.rules.inline._escapes,"$1")},n[0],this.lexer)}}reflink(t,n){let s;if(s=(s=this.rules.inline.reflink.exec(t))||this.rules.inline.nolink.exec(t)){let e=(s[2]||s[1]).replace(/\s+/g," ");return(e=n[e.toLowerCase()])?b(s,e,s[0],this.lexer):{type:"text",raw:t=s[0].charAt(0),text:t}}}emStrong(r,i,e=""){let l=this.rules.inline.emStrong.lDelim.exec(r);if(l&&((!l[3]||!e.match(/[\p{L}\p{N}]/u))&&(!(l[1]||l[2]||"")||!e||this.rules.inline.punctuation.exec(e)))){var a=l[0].length-1;let e,t,n=a,s=0;var o,h,c="*"===l[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,i=i.slice(-1*r.length+a);null!=(l=c.exec(i));)if(e=l[1]||l[2]||l[3]||l[4]||l[5]||l[6])if(t=e.length,l[3]||l[4])n+=t;else if((l[5]||l[6])&&a%3&&!((a+t)%3))s+=t;else if(!(0<(n-=t)))return t=Math.min(t,t+n+s),o=r.slice(0,a+l.index+t+1),Math.min(a,t)%2?(h=o.slice(1,-1),{type:"em",raw:o,text:h,tokens:this.lexer.inlineTokens(h)}):(h=o.slice(2,-2),{type:"strong",raw:o,text:h,tokens:this.lexer.inlineTokens(h)})}}codespan(t){t=this.rules.inline.code.exec(t);if(t){let e=t[2].replace(/\n/g," ");var n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return e=u(e=n&&s?e.substring(1,e.length-1):e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}}del(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n,s){n=this.rules.inline.autolink.exec(n);if(n){let e,t;return t="@"===n[2]?"mailto:"+(e=u(this.options.mangle?s(n[1]):n[1])):e=u(n[1]),{type:"link",raw:n[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e,n){var s,r;if(s=this.rules.inline.url.exec(e)){let e,t;if("@"===s[2])e=u(this.options.mangle?n(s[0]):s[0]),t="mailto:"+e;else{for(;r=s[0],s[0]=this.rules.inline._backpedal.exec(s[0])[0],r!==s[0];);e=u(s[0]),t="www."===s[1]?"http://"+s[0]:s[0]}return{type:"link",raw:s[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t,n){t=this.rules.inline.text.exec(t);if(t){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):u(t[0]):t[0]:u(this.options.smartypants?n(t[0]):t[0]),{type:"text",raw:t[0],text:e}}}},y={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},_=(y.def=g(y.def).replace("label",y._label).replace("title",y._title).getRegex(),y.bullet=/(?:[*+-]|\d{1,9}[.)])/,y.listItemStart=g(/^( *)(bull) */).replace("bull",y.bullet).getRegex(),y.list=g(y.list).replace(/bull/g,y.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+y.def.source+")").getRegex(),y._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y._comment=/|$)/,y.html=g(y.html,"i").replace("comment",y._comment).replace("tag",y._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),y.lheading=g(y.lheading).replace(/bull/g,y.bullet).getRegex(),y.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.blockquote=g(y.blockquote).replace("paragraph",y.paragraph).getRegex(),y.normal={...y},y.gfm={...y.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},y.gfm.table=g(y.gfm.table).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.gfm.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",y.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.pedantic={...y.normal,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",y._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:f,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(y.normal._paragraph).replace("hr",y.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",y.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()},{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:f,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~",_.punctuation=g(_.punctuation,"u").replace(/punctuation/g,_._punctuation).getRegex(),_.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,_.anyPunctuation=/\\[punct]/g,_._escapes=/\\([punct])/g,_._comment=g(y._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),_.emStrong.lDelim=g(_.emStrong.lDelim,"u").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimAst=g(_.emStrong.rDelimAst,"gu").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimUnd=g(_.emStrong.rDelimUnd,"gu").replace(/punct/g,_._punctuation).getRegex(),_.anyPunctuation=g(_.anyPunctuation,"gu").replace(/punct/g,_._punctuation).getRegex(),_._escapes=g(_._escapes,"gu").replace(/punct/g,_._punctuation).getRegex(),_._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,_._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,_.autolink=g(_.autolink).replace("scheme",_._scheme).replace("email",_._email).getRegex(),_._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,_.tag=g(_.tag).replace("comment",_._comment).replace("attribute",_._attribute).getRegex(),_._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,_._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,_._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,_.link=g(_.link).replace("label",_._label).replace("href",_._href).replace("title",_._title).getRegex(),_.reflink=g(_.reflink).replace("label",_._label).replace("ref",y._label).getRegex(),_.nolink=g(_.nolink).replace("ref",y._label).getRegex(),_.reflinkSearch=g(_.reflinkSearch,"g").replace("reflink",_.reflink).replace("nolink",_.nolink).getRegex(),_.normal={..._},_.pedantic={..._.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",_._label).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",_._label).getRegex()},_.gfm={..._.normal,escape:g(_.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length));let n,e,r,i;for(;s;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(e=>!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.space(s))s=s.substring(n.raw.length),1===n.raw.length&&0{"number"==typeof(n=e.call({lexer:this},a))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r)))e=t[t.length-1],i&&"paragraph"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n),i=r.length!==s.length,s=s.substring(n.raw.length);else if(n=this.tokenizer.text(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n);else if(s){var l="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(s,t=[]){let n,e,r,i=s,l,a,o;if(this.tokens.links){var h=Object.keys(this.tokens.links);if(0!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.escape(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.link(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(s,this.tokens.links))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(s,i,o))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(s,$))s=s.substring(n.raw.length),t.push(n);else if(!this.state.inLink&&(n=this.tokenizer.url(s,$)))s=s.substring(n.raw.length),t.push(n);else{if(r=s,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const p=s.slice(1);let n;this.options.extensions.startInline.forEach(e=>{"number"==typeof(n=e.call({lexer:this},p))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(n=this.tokenizer.inlineText(r,V))s=s.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),a=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(s){var c="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}return t}},S=class{constructor(e){this.options=e||l}code(e,t,n){var s,t=(t||"").match(/\S*/)[0];return this.options.highlight&&null!=(s=this.options.highlight(e,t))&&s!==e&&(n=!0,e=s),e=e.replace(/\n$/,"")+"\n",t?'
    '+(n?e:u(e,!0))+"
    \n":"
    "+(n?e:u(e,!0))+"
    \n"}blockquote(e){return`
    +"use strict";var marked=(()=>{var e,t=Object.defineProperty,j=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,D=Object.prototype.hasOwnProperty,n=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},p=(e,t,n)=>{var s="access private method";if(t.has(e))return n;throw TypeError("Cannot "+s)},s={},C=s,r={Hooks:()=>I,Lexer:()=>v,Marked:()=>J,Parser:()=>A,Renderer:()=>S,Slugger:()=>R,TextRenderer:()=>T,Tokenizer:()=>w,defaults:()=>l,getDefaults:()=>i,lexer:()=>oe,marked:()=>O,options:()=>te,parse:()=>le,parseInline:()=>ie,parser:()=>ae,setOptions:()=>ne,use:()=>se,walkTokens:()=>re};for(e in r)t(C,e,{get:r[e],enumerable:!0});function i(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var l=i();function a(e){l=e}var o=/[&<>"']/,B=new RegExp(o.source,"g"),h=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,U=new RegExp(h.source,"g"),Q={"&":"&","<":"<",">":">",'"':""","'":"'"},c=e=>Q[e];function u(e,t){if(t){if(o.test(e))return e.replace(B,c)}else if(h.test(e))return e.replace(U,c);return e}var M=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function z(e){return e.replace(M,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var N=/(^|[^\[])\^/g;function g(n,e){n="string"==typeof n?n:n.source,e=e||"";const s={replace:(e,t)=>(t=(t="object"==typeof t&&"source"in t?t.source:t).replace(N,"$1"),n=n.replace(e,t),s),getRegex:()=>new RegExp(n,e)};return s}var H=/[^\w:]/g,F=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function d(e,t,n){if(e){let e;try{e=decodeURIComponent(z(n)).replace(H,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}var s;t&&!F.test(n)&&(e=n,k[" "+(t=t)]||(W.test(t)?k[" "+t]=t+"/":k[" "+t]=m(t,"/",!0)),s=-1===(t=k[" "+t]).indexOf(":"),n="//"===e.substring(0,2)?s?e:t.replace(X,"$1")+e:"/"===e.charAt(0)?s?e:t.replace(G,"$1")+e:t+e);try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var k={},W=/^[^:]+:\/*[^/]*$/,X=/^([^:]+:)[\s\S]*$/,G=/^([^:]+:\/*[^/]*)[\s\S]*$/;var f={exec:()=>null};function x(e,t){var n=e.replace(/\|/g,(e,t,n)=>{let s=!1,r=t;for(;0<=--r&&"\\"===n[r];)s=!s;return s?"|":" |"}).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),0t)n.splice(t);else for(;n.length{var t=e.match(/^\s+/);return null!==t&&([t]=t,t.length>=n.length)?e.slice(n.length):e}).join("\n")}(t=e[0],e[3]||""),{type:"code",raw:t,lang:e[2]&&e[2].trim().replace(this.rules.inline._escapes,"$1"),text:n}}heading(t){var n,t=this.rules.block.heading.exec(t);if(t){let e=t[2].trim();return/#$/.test(e)&&(n=m(e,"#"),!this.options.pedantic&&n&&!/ $/.test(n)||(e=n.trim())),{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}}blockquote(e){var t,n,s,e=this.rules.block.blockquote.exec(e);if(e)return t=e[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top,this.lexer.state.top=!0,s=this.lexer.blockTokens(t),this.lexer.state.top=n,{type:"blockquote",raw:e[0],tokens:s,text:t}}list(g){let d=this.rules.block.list.exec(g);if(d){let e,t,n,s,r,i,l,a,o,h,c,p,u=d[1].trim();for(var k=1" ".repeat(3*e.length)),o=g.split("\n",1)[0],this.options.pedantic?(s=2,c=a.trimLeft()):(s=4<(s=d[2].search(/[^ ]/))?1:s,c=a.slice(s),s+=d[1].length),i=!1,!a&&/^ *$/.test(o)&&(e+=o+"\n",g=g.substring(o.length+1),p=!0),!p)for(var m=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),w=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),y=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);g&&(h=g.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!w.test(o))&&!y.test(o)&&!m.test(o)&&!b.test(g);){if(o.search(/[^ ]/)>=s||!o.trim())c+="\n"+o.slice(s);else{if(i)break;if(4<=a.search(/[^ ]/))break;if(w.test(a))break;if(y.test(a))break;if(b.test(a))break;c+="\n"+o}i||o.trim()||(i=!0),e+=h+"\n",g=g.substring(h.length+1),a=o.slice(s)}f.loose||(l?f.loose=!0:/\n *\n *$/.test(e)&&(l=!0)),this.options.gfm&&(t=/^\[[ xX]\] /.exec(c))&&(n="[ ] "!==t[0],c=c.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:e,task:!!t,checked:n,loose:!1,text:c}),f.raw+=e}f.items[f.items.length-1].raw=e.trimRight(),f.items[f.items.length-1].text=c.trimRight(),f.raw=f.raw.trimRight();var _,$=f.items.length;for(r=0;r<$;r++)this.lexer.state.top=!1,f.items[r].tokens=this.lexer.blockTokens(f.items[r].text,[]),f.loose||(_=0<(_=f.items[r].tokens.filter(e=>"space"===e.type)).length&&_.some(e=>/\n.*\n/.test(e.raw)),f.loose=_);if(f.loose)for(r=0;r<$;r++)f.items[r].loose=!0;return f}}html(e){var t,n,e=this.rules.block.html.exec(e);if(e)return t={type:"html",block:!0,raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]},this.options.sanitize&&(e=this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]),(n=t).type="paragraph",n.text=e,n.tokens=this.lexer.inline(e)),t}def(e){var t,n,s,e=this.rules.block.def.exec(e);if(e)return t=e[1].toLowerCase().replace(/\s+/g," "),n=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",s=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:n,title:s}}table(e){e=this.rules.block.table.exec(e);if(e){var i={type:"table",raw:e[0],header:x(e[1]).map(e=>({text:e})),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){let e=i.align.length,t,n,s,r;for(t=0;t({text:e}));for(e=i.header.length,n=0;n/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):u(e[0]):e[0]}}link(n){n=this.rules.inline.link.exec(n);if(n){var s=n[2].trim();if(!this.options.pedantic&&/^$/.test(s))return;var r=m(s.slice(0,-1),"\\");if((s.length-r.length)%2==0)return}else{var i,r=function(n,s){if(-1!==n.indexOf(s[1])){var r=n.length;let e=0,t=0;for(;t$/.test(s)?e.slice(1):e.slice(1,-1):e)&&e.replace(this.rules.inline._escapes,"$1"),title:t&&t.replace(this.rules.inline._escapes,"$1")},n[0],this.lexer)}}reflink(t,n){let s;if(s=(s=this.rules.inline.reflink.exec(t))||this.rules.inline.nolink.exec(t)){let e=(s[2]||s[1]).replace(/\s+/g," ");return(e=n[e.toLowerCase()])?b(s,e,s[0],this.lexer):{type:"text",raw:t=s[0].charAt(0),text:t}}}emStrong(r,i,e=""){let l=this.rules.inline.emStrong.lDelim.exec(r);if(l&&((!l[3]||!e.match(/[\p{L}\p{N}]/u))&&(!(l[1]||l[2]||"")||!e||this.rules.inline.punctuation.exec(e)))){var a=l[0].length-1;let e,t,n=a,s=0;var o,h,c="*"===l[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,i=i.slice(-1*r.length+a);null!=(l=c.exec(i));)if(e=l[1]||l[2]||l[3]||l[4]||l[5]||l[6])if(t=e.length,l[3]||l[4])n+=t;else if((l[5]||l[6])&&a%3&&!((a+t)%3))s+=t;else if(!(0<(n-=t)))return t=Math.min(t,t+n+s),o=r.slice(0,a+l.index+t+1),Math.min(a,t)%2?(h=o.slice(1,-1),{type:"em",raw:o,text:h,tokens:this.lexer.inlineTokens(h)}):(h=o.slice(2,-2),{type:"strong",raw:o,text:h,tokens:this.lexer.inlineTokens(h)})}}codespan(t){t=this.rules.inline.code.exec(t);if(t){let e=t[2].replace(/\n/g," ");var n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return e=u(e=n&&s?e.substring(1,e.length-1):e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}}del(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n,s){n=this.rules.inline.autolink.exec(n);if(n){let e,t;return t="@"===n[2]?"mailto:"+(e=u(this.options.mangle?s(n[1]):n[1])):e=u(n[1]),{type:"link",raw:n[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}url(e,n){var s,r;if(s=this.rules.inline.url.exec(e)){let e,t;if("@"===s[2])e=u(this.options.mangle?n(s[0]):s[0]),t="mailto:"+e;else{for(;r=s[0],s[0]=this.rules.inline._backpedal.exec(s[0])[0],r!==s[0];);e=u(s[0]),t="www."===s[1]?"http://"+s[0]:s[0]}return{type:"link",raw:s[0],text:e,href:t,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t,n){t=this.rules.inline.text.exec(t);if(t){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):u(t[0]):t[0]:u(this.options.smartypants?n(t[0]):t[0]),{type:"text",raw:t[0],text:e}}}},y={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},_=(y.def=g(y.def).replace("label",y._label).replace("title",y._title).getRegex(),y.bullet=/(?:[*+-]|\d{1,9}[.)])/,y.listItemStart=g(/^( *)(bull) */).replace("bull",y.bullet).getRegex(),y.list=g(y.list).replace(/bull/g,y.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+y.def.source+")").getRegex(),y._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y._comment=/|$)/,y.html=g(y.html,"i").replace("comment",y._comment).replace("tag",y._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),y.lheading=g(y.lheading).replace(/bull/g,y.bullet).getRegex(),y.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.blockquote=g(y.blockquote).replace("paragraph",y.paragraph).getRegex(),y.normal={...y},y.gfm={...y.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},y.gfm.table=g(y.gfm.table).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.gfm.paragraph=g(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",y.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",y._tag).getRegex(),y.pedantic={...y.normal,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",y._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:f,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(y.normal._paragraph).replace("hr",y.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",y.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()},{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:f,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~",_.punctuation=g(_.punctuation,"u").replace(/punctuation/g,_._punctuation).getRegex(),_.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,_.anyPunctuation=/\\[punct]/g,_._escapes=/\\([punct])/g,_._comment=g(y._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),_.emStrong.lDelim=g(_.emStrong.lDelim,"u").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimAst=g(_.emStrong.rDelimAst,"gu").replace(/punct/g,_._punctuation).getRegex(),_.emStrong.rDelimUnd=g(_.emStrong.rDelimUnd,"gu").replace(/punct/g,_._punctuation).getRegex(),_.anyPunctuation=g(_.anyPunctuation,"gu").replace(/punct/g,_._punctuation).getRegex(),_._escapes=g(_._escapes,"gu").replace(/punct/g,_._punctuation).getRegex(),_._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,_._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,_.autolink=g(_.autolink).replace("scheme",_._scheme).replace("email",_._email).getRegex(),_._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,_.tag=g(_.tag).replace("comment",_._comment).replace("attribute",_._attribute).getRegex(),_._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,_._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,_._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,_.link=g(_.link).replace("label",_._label).replace("href",_._href).replace("title",_._title).getRegex(),_.reflink=g(_.reflink).replace("label",_._label).replace("ref",y._label).getRegex(),_.nolink=g(_.nolink).replace("ref",y._label).getRegex(),_.reflinkSearch=g(_.reflinkSearch,"g").replace("reflink",_.reflink).replace("nolink",_.nolink).getRegex(),_.normal={..._},_.pedantic={..._.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",_._label).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",_._label).getRegex()},_.gfm={..._.normal,escape:g(_.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length));let n,e,r,i;for(;s;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(e=>!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.space(s))s=s.substring(n.raw.length),1===n.raw.length&&0{"number"==typeof(n=e.call({lexer:this},a))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r)))e=t[t.length-1],i&&"paragraph"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n),i=r.length!==s.length,s=s.substring(n.raw.length);else if(n=this.tokenizer.text(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+n.raw,e.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(n);else if(s){var l="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(s,t=[]){let n,e,r,i=s,l,a,o;if(this.tokens.links){var h=Object.keys(this.tokens.links);if(0!!(n=e.call({lexer:this},s,t))&&(s=s.substring(n.raw.length),t.push(n),!0))))if(n=this.tokenizer.escape(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(s))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.link(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(s,this.tokens.links))s=s.substring(n.raw.length),(e=t[t.length-1])&&"text"===n.type&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(s,i,o))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(s))s=s.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(s,$))s=s.substring(n.raw.length),t.push(n);else if(!this.state.inLink&&(n=this.tokenizer.url(s,$)))s=s.substring(n.raw.length),t.push(n);else{if(r=s,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const p=s.slice(1);let n;this.options.extensions.startInline.forEach(e=>{"number"==typeof(n=e.call({lexer:this},p))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(r=s.substring(0,t+1))}if(n=this.tokenizer.inlineText(r,V))s=s.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),a=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=n.raw,e.text+=n.text):t.push(n);else if(s){var c="Infinite loop on byte: "+s.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}return t}},S=class{constructor(e){this.options=e||l}code(e,t,n){var s,t=(t||"").match(/\S*/)[0];return this.options.highlight&&null!=(s=this.options.highlight(e,t))&&s!==e&&(n=!0,e=s),e=e.replace(/\n$/,"")+"\n",t?'
    '+(n?e:u(e,!0))+"
    \n":"
    "+(n?e:u(e,!0))+"
    \n"}blockquote(e){return`
    ${e}
    `}html(e,t){return e}heading(e,t,n,s){return this.options.headerIds?`${e} `:`${e} @@ -12,4 +12,4 @@ ${e}
    `}table(e,t){return"\n\n"+e+"\n"+(t=t&&`${t}`)+"
    \n"}tablerow(e){return` ${e} `}tablecell(e,t){var n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+` -`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s='
    "}image(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s=`${n}":">"}text(e){return e}},T=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}},R=class{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,s=0;if(this.seen.hasOwnProperty(n))for(s=this.seen[e];s++,n=e+"-"+s,this.seen.hasOwnProperty(n););return t||(this.seen[e]=s,this.seen[n]=0),n}slug(e,t={}){e=this.serialize(e);return this.getNextSafeSlug(e,t.dryrun)}},A=class{constructor(e){this.options=e||l,this.options.renderer=this.options.renderer||new S,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new T,this.slugger=new R}static parse(e,t){return new A(t).parse(e)}static parseInline(e,t){return new A(t).parseInline(e)}parse(e,t=!0){let n="",s,r,i,l,a,o,h,c,p,u,g,d,k,f,x,m,b,w,y;var _=e.length;for(s=0;s<_;s++)if(u=e[s],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(!1!==(y=this.options.extensions.renderers[u.type].call({parser:this},u))||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(u.type)))n+=y||"";else switch(u.type){case"space":continue;case"hr":n+=this.renderer.hr();continue;case"heading":n+=this.renderer.heading(this.parseInline(u.tokens),u.depth,z(this.parseInline(u.tokens,this.textRenderer)),this.slugger);continue;case"code":n+=this.renderer.code(u.text,u.lang,!!u.escaped);continue;case"table":for(c="",h="",l=u.header.length,r=0;r{n=n.concat(this.walkTokens(s[e],t))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,t)))}return n}use(...e){const m=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{var e={...n};if(e.async=this.defaults.async||e.async||!1,n.extensions&&(n.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){const s=m.renderers[n.name];s?m.renderers[n.name]=function(...e){let t=n.renderer.apply(this,e);return t=!1===t?s.apply(this,e):t}:m.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||"block"!==n.level&&"inline"!==n.level)throw new Error("extension level must be 'block' or 'inline'");m[n.level]?m[n.level].unshift(n.tokenizer):m[n.level]=[n.tokenizer],n.start&&("block"===n.level?m.startBlock?m.startBlock.push(n.start):m.startBlock=[n.start]:"inline"===n.level&&(m.startInline?m.startInline.push(n.start):m.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(m.childTokens[n.name]=n.childTokens)}),e.extensions=m),n.renderer){const i=this.defaults.renderer||new S(this.defaults);for(const l in n.renderer){const a=n.renderer[l];var t=l;const o=i[t];i[t]=(...e)=>{let t=a.apply(i,e);return t=!1===t?o.apply(i,e):t}}e.renderer=i}if(n.tokenizer){const h=this.defaults.tokenizer||new w(this.defaults);for(const c in n.tokenizer){const p=n.tokenizer[c];var s=c;const u=h[s];h[s]=(...e)=>{let t=p.apply(h,e);return t=!1===t?u.apply(h,e):t}}e.tokenizer=h}if(n.hooks){const g=this.defaults.hooks||new I;for(const d in n.hooks){const k=n.hooks[d];var r=d;const f=g[r];I.passThroughHooks.has(d)?g[r]=e=>{return this.defaults.async?Promise.resolve(k.call(g,e)).then(e=>f.call(g,e)):(e=k.call(g,e),f.call(g,e))}:g[r]=(...e)=>{let t=k.apply(g,e);return t=!1===t?f.apply(g,e):t}}e.hooks=g}if(n.walkTokens){const x=this.defaults.walkTokens;e.walkTokens=function(e){let t=[];return t.push(n.walkTokens.call(this,e)),t=x?t.concat(x.call(this,e)):t}}this.defaults={...this.defaults,...e}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}}),P=new WeakSet,K=function(h,c){return(t,e,r)=>{"function"==typeof e&&(r=e,e=null);var n,e={...e};const i={...this.defaults,...e},l=p(this,Y,ee).call(this,!!i.silent,!!i.async,r);if(null==t)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(e=i,n=r,e&&!e.silent&&(n&&console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async"),(e.sanitize||e.sanitizer)&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"),!e.highlight&&"language-"===e.langPrefix||console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight."),e.mangle&&console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`."),e.baseUrl&&console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url."),e.smartypants&&console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants."),e.xhtml&&console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml."),e.headerIds||e.headerPrefix)&&console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`."),i.hooks&&(i.hooks.options=i),r){const a=i.highlight;let n;try{i.hooks&&(t=i.hooks.preprocess(t)),n=h(t,i)}catch(e){return l(e)}const o=t=>{let e;if(!t)try{i.walkTokens&&this.walkTokens(n,i.walkTokens),e=c(n,i),i.hooks&&(e=i.hooks.postprocess(e))}catch(e){t=e}return i.highlight=a,t?l(t):r(null,e)};if(!a||a.length<3)return o();if(delete i.highlight,!n.length)return o();let s=0;this.walkTokens(n,n=>{"code"===n.type&&(s++,setTimeout(()=>{a(n.text,n.lang,(e,t)=>{if(e)return o(e);null!=t&&t!==n.text&&(n.text=t,n.escaped=!0),0===--s&&o()})},0))}),void(0===s&&o())}else{if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>h(e,i)).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>c(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(l);try{i.hooks&&(t=i.hooks.preprocess(t));var s=h(t,i);i.walkTokens&&this.walkTokens(s,i.walkTokens);let e=c(s,i);return e=i.hooks?i.hooks.postprocess(e):e}catch(e){return l(e)}}}},Y=new WeakSet,ee=function(n,s,r){return e=>{var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n)return t="

    An error occurred:

    "+u(e.message+"",!0)+"
    ",s?Promise.resolve(t):r?void r(null,t):t;if(s)return Promise.reject(e);if(!r)throw e;r(e)}},E=new J;function O(e,t,n){return E.parse(e,t,n)}O.options=O.setOptions=function(e){return E.setOptions(e),a(O.defaults=E.defaults),O},O.getDefaults=i,O.defaults=l,O.use=function(...e){return E.use(...e),a(O.defaults=E.defaults),O},O.walkTokens=function(e,t){return E.walkTokens(e,t)},O.parseInline=E.parseInline,O.Parser=A,O.parser=A.parse,O.Renderer=S,O.TextRenderer=T,O.Lexer=v,O.lexer=v.lex,O.Tokenizer=w,O.Slugger=R,O.Hooks=I;var te=(O.parse=O).options,ne=O.setOptions,se=O.use,re=O.walkTokens,ie=O.parseInline,le=O,ae=A.parse,oe=v.lex,f=s,Z=t({},"__esModule",{value:!0}),q=f,he=void 0,ce=void 0;if(q&&"object"==typeof q||"function"==typeof q)for(let e of L(q))D.call(Z,e)||e===he||t(Z,e,{get:()=>q[e],enumerable:!(ce=j(q,e))||ce.enumerable});return Z})(); \ No newline at end of file +`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s='
    "}image(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;let s=`${n}":">"}text(e){return e}},T=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}},R=class{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,s=0;if(this.seen.hasOwnProperty(n))for(s=this.seen[e];s++,n=e+"-"+s,this.seen.hasOwnProperty(n););return t||(this.seen[e]=s,this.seen[n]=0),n}slug(e,t={}){e=this.serialize(e);return this.getNextSafeSlug(e,t.dryrun)}},A=class{constructor(e){this.options=e||l,this.options.renderer=this.options.renderer||new S,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new T,this.slugger=new R}static parse(e,t){return new A(t).parse(e)}static parseInline(e,t){return new A(t).parseInline(e)}parse(e,t=!0){let n="",s,r,i,l,a,o,h,c,p,u,g,d,k,f,x,m,b,w,y;var _=e.length;for(s=0;s<_;s++)if(u=e[s],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(!1!==(y=this.options.extensions.renderers[u.type].call({parser:this},u))||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(u.type)))n+=y||"";else switch(u.type){case"space":continue;case"hr":n+=this.renderer.hr();continue;case"heading":n+=this.renderer.heading(this.parseInline(u.tokens),u.depth,z(this.parseInline(u.tokens,this.textRenderer)),this.slugger);continue;case"code":n+=this.renderer.code(u.text,u.lang,!!u.escaped);continue;case"table":for(c="",h="",l=u.header.length,r=0;r{n=n.concat(this.walkTokens(s[e],t))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,t)))}return n}use(...e){const m=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{var e={...n};if(e.async=this.defaults.async||e.async||!1,n.extensions&&(n.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){const s=m.renderers[n.name];s?m.renderers[n.name]=function(...e){let t=n.renderer.apply(this,e);return t=!1===t?s.apply(this,e):t}:m.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||"block"!==n.level&&"inline"!==n.level)throw new Error("extension level must be 'block' or 'inline'");m[n.level]?m[n.level].unshift(n.tokenizer):m[n.level]=[n.tokenizer],n.start&&("block"===n.level?m.startBlock?m.startBlock.push(n.start):m.startBlock=[n.start]:"inline"===n.level&&(m.startInline?m.startInline.push(n.start):m.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(m.childTokens[n.name]=n.childTokens)}),e.extensions=m),n.renderer){const i=this.defaults.renderer||new S(this.defaults);for(const l in n.renderer){const a=n.renderer[l];var t=l;const o=i[t];i[t]=(...e)=>{let t=a.apply(i,e);return(t=!1===t?o.apply(i,e):t)||""}}e.renderer=i}if(n.tokenizer){const h=this.defaults.tokenizer||new w(this.defaults);for(const c in n.tokenizer){const p=n.tokenizer[c];var s=c;const u=h[s];h[s]=(...e)=>{let t=p.apply(h,e);return t=!1===t?u.apply(h,e):t}}e.tokenizer=h}if(n.hooks){const g=this.defaults.hooks||new I;for(const d in n.hooks){const k=n.hooks[d];var r=d;const f=g[r];I.passThroughHooks.has(d)?g[r]=e=>{return this.defaults.async?Promise.resolve(k.call(g,e)).then(e=>f.call(g,e)):(e=k.call(g,e),f.call(g,e))}:g[r]=(...e)=>{let t=k.apply(g,e);return t=!1===t?f.apply(g,e):t}}e.hooks=g}if(n.walkTokens){const x=this.defaults.walkTokens;e.walkTokens=function(e){let t=[];return t.push(n.walkTokens.call(this,e)),t=x?t.concat(x.call(this,e)):t}}this.defaults={...this.defaults,...e}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}}),P=new WeakSet,K=function(h,c){return(t,e,r)=>{"function"==typeof e&&(r=e,e=null);var n,e={...e};const i={...this.defaults,...e},l=p(this,Y,ee).call(this,!!i.silent,!!i.async,r);if(null==t)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(e=i,n=r,e&&!e.silent&&(n&&console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async"),(e.sanitize||e.sanitizer)&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"),!e.highlight&&"language-"===e.langPrefix||console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight."),e.mangle&&console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`."),e.baseUrl&&console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url."),e.smartypants&&console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants."),e.xhtml&&console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml."),e.headerIds||e.headerPrefix)&&console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`."),i.hooks&&(i.hooks.options=i),r){const a=i.highlight;let n;try{i.hooks&&(t=i.hooks.preprocess(t)),n=h(t,i)}catch(e){return l(e)}const o=t=>{let e;if(!t)try{i.walkTokens&&this.walkTokens(n,i.walkTokens),e=c(n,i),i.hooks&&(e=i.hooks.postprocess(e))}catch(e){t=e}return i.highlight=a,t?l(t):r(null,e)};if(!a||a.length<3)return o();if(delete i.highlight,!n.length)return o();let s=0;this.walkTokens(n,n=>{"code"===n.type&&(s++,setTimeout(()=>{a(n.text,n.lang,(e,t)=>{if(e)return o(e);null!=t&&t!==n.text&&(n.text=t,n.escaped=!0),0===--s&&o()})},0))}),void(0===s&&o())}else{if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>h(e,i)).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>c(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(l);try{i.hooks&&(t=i.hooks.preprocess(t));var s=h(t,i);i.walkTokens&&this.walkTokens(s,i.walkTokens);let e=c(s,i);return e=i.hooks?i.hooks.postprocess(e):e}catch(e){return l(e)}}}},Y=new WeakSet,ee=function(n,s,r){return e=>{var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n)return t="

    An error occurred:

    "+u(e.message+"",!0)+"
    ",s?Promise.resolve(t):r?void r(null,t):t;if(s)return Promise.reject(e);if(!r)throw e;r(e)}},E=new J;function O(e,t,n){return E.parse(e,t,n)}O.options=O.setOptions=function(e){return E.setOptions(e),a(O.defaults=E.defaults),O},O.getDefaults=i,O.defaults=l,O.use=function(...e){return E.use(...e),a(O.defaults=E.defaults),O},O.walkTokens=function(e,t){return E.walkTokens(e,t)},O.parseInline=E.parseInline,O.Parser=A,O.parser=A.parse,O.Renderer=S,O.TextRenderer=T,O.Lexer=v,O.lexer=v.lex,O.Tokenizer=w,O.Slugger=R,O.Hooks=I;var te=(O.parse=O).options,ne=O.setOptions,se=O.use,re=O.walkTokens,ie=O.parseInline,le=O,ae=A.parse,oe=v.lex,f=s,Z=t({},"__esModule",{value:!0}),q=f,he=void 0,ce=void 0;if(q&&"object"==typeof q||"function"==typeof q)for(let e of L(q))D.call(Z,e)||e===he||t(Z,e,{get:()=>q[e],enumerable:!(ce=j(q,e))||ce.enumerable});return Z})(); \ No newline at end of file diff --git a/src/Hooks.ts b/src/Hooks.ts index 0550b0d302..130e790272 100644 --- a/src/Hooks.ts +++ b/src/Hooks.ts @@ -16,14 +16,14 @@ export class _Hooks { /** * Process markdown before marked */ - preprocess(markdown: string) { + preprocess(markdown: string): string | Promise { return markdown; } /** * Process HTML after marked is finished */ - postprocess(html: string | undefined) { + postprocess(html: string): string | Promise { return html; } } diff --git a/src/Instance.ts b/src/Instance.ts index 75dbb8b1cb..8a5ea224ae 100644 --- a/src/Instance.ts +++ b/src/Instance.ts @@ -15,6 +15,9 @@ import type { Token, TokensList } from './Tokens.ts'; export type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void; +type unknownFunction = (...args: unknown[]) => unknown; +type GenericRendererFunction = (...args: unknown[]) => string | false; + export class Marked { defaults = _getDefaults(); options = this.setOptions; @@ -141,17 +144,16 @@ export class Marked { if (pack.renderer) { const renderer = this.defaults.renderer || new _Renderer(this.defaults); for (const prop in pack.renderer) { - const rendererFunc = pack.renderer[prop as keyof MarkedExtension["renderer"]] as Function; - const rendererKey = prop as keyof _Renderer - const prevRenderer = renderer[rendererKey] as Function; + const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction; + const rendererKey = prop as keyof _Renderer; + const prevRenderer = renderer[rendererKey] as GenericRendererFunction; // Replace renderer with func to run extension, but fall back if false renderer[rendererKey] = (...args: unknown[]) => { - let ret = rendererFunc.apply(renderer, args); if (ret === false) { ret = prevRenderer.apply(renderer, args); } - return ret; + return ret || ''; }; } opts.renderer = renderer; @@ -159,9 +161,9 @@ export class Marked { if (pack.tokenizer) { const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); for (const prop in pack.tokenizer) { - const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension["tokenizer"]] as Function; - const tokenizerKey = prop as keyof _Tokenizer - const prevTokenizer = tokenizer[tokenizerKey] as Function; + const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction; + const tokenizerKey = prop as keyof _Tokenizer; + const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction; // Replace tokenizer with func to run extension, but fall back if false tokenizer[tokenizerKey] = (...args: unknown[]) => { let ret = tokenizerFunc.apply(tokenizer, args); @@ -178,19 +180,19 @@ export class Marked { if (pack.hooks) { const hooks = this.defaults.hooks || new _Hooks(); for (const prop in pack.hooks) { - const hooksFunc = pack.hooks[prop as keyof MarkedExtension["hooks"]] as Function; - const hooksKey = prop as keyof _Hooks - const prevHook = hooks[hooksKey] as Function; + const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction; + const hooksKey = prop as keyof _Hooks; + const prevHook = hooks[hooksKey] as unknownFunction; if (_Hooks.passThroughHooks.has(prop)) { hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => { if (this.defaults.async) { return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); + return prevHook.call(hooks, ret) as string; }); } const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); + return prevHook.call(hooks, ret) as string; }; } else { hooks[hooksKey] = (...args: unknown[]) => { @@ -198,7 +200,7 @@ export class Marked { if (ret === false) { ret = prevHook.apply(hooks, args); } - return ret; + return ret as string; }; } } @@ -229,7 +231,7 @@ export class Marked { return this; } - #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string | undefined) { + #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) { return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => { if (typeof optOrCallback === 'function') { callback = optOrCallback; @@ -261,7 +263,7 @@ export class Marked { try { if (opt.hooks) { - src = opt.hooks.preprocess(src); + src = opt.hooks.preprocess(src) as string; } tokens = lexer(src, opt); } catch (e) { @@ -278,7 +280,7 @@ export class Marked { } out = parser(tokens, opt)!; if (opt.hooks) { - out = opt.hooks.postprocess(out); + out = opt.hooks.postprocess(out) as string; } } catch (e) { err = e as Error; @@ -341,7 +343,7 @@ export class Marked { try { if (opt.hooks) { - src = opt.hooks.preprocess(src); + src = opt.hooks.preprocess(src) as string; } const tokens = lexer(src, opt); if (opt.walkTokens) { @@ -349,7 +351,7 @@ export class Marked { } let html = parser(tokens, opt); if (opt.hooks) { - html = opt.hooks.postprocess(html); + html = opt.hooks.postprocess(html) as string; } return html; } catch (e) { diff --git a/src/MarkedOptions.ts b/src/MarkedOptions.ts index 939673a3a7..f54fd0c71f 100644 --- a/src/MarkedOptions.ts +++ b/src/MarkedOptions.ts @@ -25,9 +25,11 @@ export interface RendererThis { parser: _Parser; } +export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; + export interface RendererExtension { name: string; - renderer: (this: RendererThis, token: Tokens.Generic) => string | false | undefined; + renderer: RendererExtensionFunction; } export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); @@ -98,8 +100,8 @@ export interface MarkedExtension { * postprocess is called to process html after marked has finished parsing. */ hooks?: { - preprocess: (markdown: string) => string, - postprocess: (html: string | undefined) => string | undefined, + preprocess: (markdown: string) => string | Promise, + postprocess: (html: string) => string | Promise, // eslint-disable-next-line no-use-before-define options?: MarkedOptions } | null; @@ -201,7 +203,7 @@ export interface MarkedOptions extends Omit string | false | undefined>, + renderers: Record, childTokens: Record, block: any[], inline: any[], From 5ada614d25490d8fa9681065ef981b2751ee67c0 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 29 Jul 2023 02:01:13 -0600 Subject: [PATCH 3/6] import .ts files --- lib/marked.cjs.map | 2 +- lib/marked.esm.js.map | 2 +- lib/marked.umd.js.map | 2 +- src/Instance.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/marked.cjs.map b/lib/marked.cjs.map index 28339db66f..fa65b28a44 100644 --- a/lib/marked.cjs.map +++ b/lib/marked.cjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.esm.js.map b/lib/marked.esm.js.map index 65eefa083e..8e8e15fa80 100644 --- a/lib/marked.esm.js.map +++ b/lib/marked.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,SAAS,eAA8B;AAC5C,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,WAAW;AAAA,IACX,cAAc;AAAA,IACd,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AACF;AAEO,IAAI,YAAY,aAAa;AAE7B,SAAS,eAAe,aAA4B;AACzD,cAAY;AACd;;;AC3BA,IAAM,aAAa;AACnB,IAAM,gBAAgB,IAAI,OAAO,WAAW,QAAQ,GAAG;AACvD,IAAM,qBAAqB;AAC3B,IAAM,wBAAwB,IAAI,OAAO,mBAAmB,QAAQ,GAAG;AACvE,IAAM,qBAAgD;AAAA,EACpD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AACA,IAAM,uBAAuB,CAAC,OAAe,mBAAmB,EAAE;AAE3D,SAAS,OAAO,MAAc,QAAkB;AACrD,MAAI,QAAQ;AACV,QAAI,WAAW,KAAK,IAAI,GAAG;AACzB,aAAO,KAAK,QAAQ,eAAe,oBAAoB;AAAA,IACzD;AAAA,EACF,OAAO;AACL,QAAI,mBAAmB,KAAK,IAAI,GAAG;AACjC,aAAO,KAAK,QAAQ,uBAAuB,oBAAoB;AAAA,IACjE;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,eAAe;AAEd,SAAS,SAAS,MAAc;AAErC,SAAO,KAAK,QAAQ,cAAc,CAAC,GAAG,MAAM;AAC1C,QAAI,EAAE,YAAY;AAClB,QAAI,MAAM;AAAS,aAAO;AAC1B,QAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,aAAO,EAAE,OAAO,CAAC,MAAM,MACnB,OAAO,aAAa,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,IAChD,OAAO,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAAA,IACzC;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,IAAM,QAAQ;AAEP,SAAS,KAAK,OAAa,KAAc;AAC9C,UAAQ,OAAO,UAAU,WAAW,QAAQ,MAAM;AAClD,QAAM,OAAO;AACb,QAAM,MAAM;AAAA,IACV,SAAS,CAAC,MAAuB,QAAyB;AACxD,YAAM,OAAO,QAAQ,YAAY,YAAY,MAAM,IAAI,SAAS;AAChE,YAAM,IAAI,QAAQ,OAAO,IAAI;AAC7B,cAAS,MAAiB,QAAQ,MAAM,GAAG;AAC3C,aAAO;AAAA,IACT;AAAA,IACA,UAAU,MAAM;AACd,aAAO,IAAI,OAAO,OAAO,GAAG;AAAA,IAC9B;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAEtB,SAAS,SAAS,UAA+B,MAAiC,MAAc;AACrG,MAAI,UAAU;AACZ,QAAI;AACJ,QAAI;AACF,aAAO,mBAAmB,SAAS,IAAI,CAAC,EACrC,QAAQ,qBAAqB,EAAE,EAC/B,YAAY;AAAA,IACjB,SAAS,GAAP;AACA,aAAO;AAAA,IACT;AACA,QAAI,KAAK,QAAQ,aAAa,MAAM,KAAK,KAAK,QAAQ,WAAW,MAAM,KAAK,KAAK,QAAQ,OAAO,MAAM,GAAG;AACvG,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,QAAQ,CAAC,qBAAqB,KAAK,IAAI,GAAG;AAC5C,WAAO,WAAW,MAAM,IAAI;AAAA,EAC9B;AACA,MAAI;AACF,WAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG;AAAA,EAC5C,SAAS,GAAP;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAM,WAAmC,CAAC;AAC1C,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,SAAS;AAER,SAAS,WAAW,MAAc,MAAc;AACrD,MAAI,CAAC,SAAS,MAAM,IAAI,GAAG;AAIzB,QAAI,WAAW,KAAK,IAAI,GAAG;AACzB,eAAS,MAAM,IAAI,IAAI,OAAO;AAAA,IAChC,OAAO;AACL,eAAS,MAAM,IAAI,IAAI,MAAM,MAAM,KAAK,IAAI;AAAA,IAC9C;AAAA,EACF;AACA,SAAO,SAAS,MAAM,IAAI;AAC1B,QAAM,eAAe,KAAK,QAAQ,GAAG,MAAM;AAE3C,MAAI,KAAK,UAAU,GAAG,CAAC,MAAM,MAAM;AACjC,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,QAAQ,UAAU,IAAI,IAAI;AAAA,EACxC,WAAW,KAAK,OAAO,CAAC,MAAM,KAAK;AACjC,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,QAAQ,QAAQ,IAAI,IAAI;AAAA,EACtC,OAAO;AACL,WAAO,OAAO;AAAA,EAChB;AACF;AAEO,IAAM,WAAW,EAAE,MAAM,MAAM,KAAK;AAEpC,SAAS,WAAW,UAAkB,OAAgB;AAG3D,QAAM,MAAM,SAAS,QAAQ,OAAO,CAAC,OAAO,QAAQ,QAAQ;AACxD,QAAI,UAAU,OACZ,OAAO;AACT,WAAO,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM;AAAM,gBAAU,CAAC;AACrD,QAAI,SAAS;AAGX,aAAO;AAAA,IACT,OAAO;AAEL,aAAO;AAAA,IACT;AAAA,EACF,CAAC,GACD,QAAQ,IAAI,MAAM,KAAK;AACzB,MAAI,IAAI;AAGR,MAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG;AACpB,UAAM,MAAM;AAAA,EACd;AACA,MAAI,MAAM,SAAS,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,GAAG;AACvD,UAAM,IAAI;AAAA,EACZ;AAEA,MAAI,OAAO;AACT,QAAI,MAAM,SAAS,OAAO;AACxB,YAAM,OAAO,KAAK;AAAA,IACpB,OAAO;AACL,aAAO,MAAM,SAAS;AAAO,cAAM,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO,IAAI,MAAM,QAAQ,KAAK;AAE5B,UAAM,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,SAAS,GAAG;AAAA,EACjD;AACA,SAAO;AACT;AAUO,SAAS,MAAM,KAAa,GAAW,QAAkB;AAC9D,QAAM,IAAI,IAAI;AACd,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACT;AAGA,MAAI,UAAU;AAGd,SAAO,UAAU,GAAG;AAClB,UAAM,WAAW,IAAI,OAAO,IAAI,UAAU,CAAC;AAC3C,QAAI,aAAa,KAAK,CAAC,QAAQ;AAC7B;AAAA,IACF,WAAW,aAAa,KAAK,QAAQ;AACnC;AAAA,IACF,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,MAAM,GAAG,IAAI,OAAO;AACjC;AAEO,SAAS,mBAAmB,KAAa,GAAW;AACzD,MAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,IAAI,IAAI;AACd,MAAI,QAAQ,GACV,IAAI;AACN,SAAO,IAAI,GAAG,KAAK;AACjB,QAAI,IAAI,CAAC,MAAM,MAAM;AACnB;AAAA,IACF,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC1B;AAAA,IACF,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC1B;AACA,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,KAAoB,UAA2B;AAC/E,MAAI,CAAC,OAAO,IAAI,QAAQ;AACtB;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,YAAQ,KAAK,mKAAmK;AAAA,EAClL;AAEA,MAAI,IAAI,YAAY,IAAI,WAAW;AACjC,YAAQ,KAAK,yMAAyM;AAAA,EACxN;AAEA,MAAI,IAAI,aAAa,IAAI,eAAe,aAAa;AACnD,YAAQ,KAAK,qMAAqM;AAAA,EACpN;AAEA,MAAI,IAAI,QAAQ;AACd,YAAQ,KAAK,kPAAkP;AAAA,EACjQ;AAEA,MAAI,IAAI,SAAS;AACf,YAAQ,KAAK,iLAAiL;AAAA,EAChM;AAEA,MAAI,IAAI,aAAa;AACnB,YAAQ,KAAK,wLAAwL;AAAA,EACvM;AAEA,MAAI,IAAI,OAAO;AACb,YAAQ,KAAK,4KAA4K;AAAA,EAC3L;AAEA,MAAI,IAAI,aAAa,IAAI,cAAc;AACrC,YAAQ,KAAK,iRAAiR;AAAA,EAChS;AACF;;;AC9PA,SAAS,WAAW,KAAe,MAA2C,KAAaA,QAA2C;AACpI,QAAM,OAAO,KAAK;AAClB,QAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAChD,QAAM,OAAO,IAAI,CAAC,EAAE,QAAQ,eAAe,IAAI;AAE/C,MAAI,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,KAAK;AAC5B,IAAAA,OAAM,MAAM,SAAS;AACrB,UAAM,QAAqB;AAAA,MACzB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQA,OAAM,aAAa,IAAI;AAAA,IACjC;AACA,IAAAA,OAAM,MAAM,SAAS;AACrB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,OAAO,IAAI;AAAA,EACnB;AACF;AAEA,SAAS,uBAAuB,KAAa,MAAc;AACzD,QAAM,oBAAoB,IAAI,MAAM,eAAe;AAEnD,MAAI,sBAAsB,MAAM;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,kBAAkB,CAAC;AAExC,SAAO,KACJ,MAAM,IAAI,EACV,IAAI,UAAQ;AACX,UAAM,oBAAoB,KAAK,MAAM,MAAM;AAC3C,QAAI,sBAAsB,MAAM;AAC9B,aAAO;AAAA,IACT;AAEA,UAAM,CAAC,YAAY,IAAI;AAEvB,QAAI,aAAa,UAAU,aAAa,QAAQ;AAC9C,aAAO,KAAK,MAAM,aAAa,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,EACT,CAAC,EACA,KAAK,IAAI;AACd;AAKO,IAAM,aAAN,MAAiB;AAAA,EAKtB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAAA,EAC5B;AAAA,EAEA,MAAM,KAAuC;AAC3C,UAAM,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG;AAC7C,QAAI,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG;AAC5B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAsC;AACzC,UAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,YAAM,OAAO,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE;AAC3C,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,gBAAgB;AAAA,QAChB,MAAM,CAAC,KAAK,QAAQ,WAChB,MAAM,MAAM,IAAI,IAChB;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAsC;AAC3C,UAAM,MAAM,KAAK,MAAM,MAAM,OAAO,KAAK,GAAG;AAC5C,QAAI,KAAK;AACP,YAAM,MAAM,IAAI,CAAC;AACjB,YAAM,OAAO,uBAAuB,KAAK,IAAI,CAAC,KAAK,EAAE;AAErD,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI,IAAI,CAAC;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAQ,KAAyC;AAC/C,UAAM,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG;AAC7C,QAAI,KAAK;AACP,UAAI,OAAO,IAAI,CAAC,EAAE,KAAK;AAGvB,UAAI,KAAK,KAAK,IAAI,GAAG;AACnB,cAAM,UAAU,MAAM,MAAM,GAAG;AAC/B,YAAI,KAAK,QAAQ,UAAU;AACzB,iBAAO,QAAQ,KAAK;AAAA,QACtB,WAAW,CAAC,WAAW,KAAK,KAAK,OAAO,GAAG;AAEzC,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,OAAO,IAAI,CAAC,EAAE;AAAA,QACd;AAAA,QACA,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,GAAG,KAAoC;AACrC,UAAM,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK,GAAG;AACxC,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,KAA4C;AACrD,UAAM,MAAM,KAAK,MAAM,MAAM,WAAW,KAAK,GAAG;AAChD,QAAI,KAAK;AACP,YAAM,OAAO,IAAI,CAAC,EAAE,QAAQ,gBAAgB,EAAE;AAC9C,YAAM,MAAM,KAAK,MAAM,MAAM;AAC7B,WAAK,MAAM,MAAM,MAAM;AACvB,YAAM,SAAS,KAAK,MAAM,YAAY,IAAI;AAC1C,WAAK,MAAM,MAAM,MAAM;AACvB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAsC;AACzC,QAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AACxC,QAAI,KAAK;AACP,UAAI,KAAK,QAAQ,WAAW,QAAQ,GAAG,WAAW,mBAChD,MAAM,UAAU,SAAS,cAAc;AAEzC,UAAI,OAAO,IAAI,CAAC,EAAE,KAAK;AACvB,YAAM,YAAY,KAAK,SAAS;AAEhC,YAAM,OAAoB;AAAA,QACxB,MAAM;AAAA,QACN,KAAK;AAAA,QACL,SAAS;AAAA,QACT,OAAO,YAAY,CAAC,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,QACxC,OAAO;AAAA,QACP,OAAO,CAAC;AAAA,MACV;AAEA,aAAO,YAAY,aAAa,KAAK,MAAM,EAAE,MAAM,KAAK;AAExD,UAAI,KAAK,QAAQ,UAAU;AACzB,eAAO,YAAY,OAAO;AAAA,MAC5B;AAGA,YAAM,YAAY,IAAI,OAAO,WAAW,kCAAmC;AAG3E,aAAO,KAAK;AACV,mBAAW;AACX,YAAI,EAAE,MAAM,UAAU,KAAK,GAAG,IAAI;AAChC;AAAA,QACF;AAEA,YAAI,KAAK,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG;AACjC;AAAA,QACF;AAEA,cAAM,IAAI,CAAC;AACX,cAAM,IAAI,UAAU,IAAI,MAAM;AAE9B,eAAO,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,QAAQ,CAAC,MAAc,IAAI,OAAO,IAAI,EAAE,MAAM,CAAC;AACvF,mBAAW,IAAI,MAAM,MAAM,CAAC,EAAE,CAAC;AAE/B,YAAI,KAAK,QAAQ,UAAU;AACzB,mBAAS;AACT,yBAAe,KAAK,SAAS;AAAA,QAC/B,OAAO;AACL,mBAAS,IAAI,CAAC,EAAE,OAAO,MAAM;AAC7B,mBAAS,SAAS,IAAI,IAAI;AAC1B,yBAAe,KAAK,MAAM,MAAM;AAChC,oBAAU,IAAI,CAAC,EAAE;AAAA,QACnB;AAEA,oBAAY;AAEZ,YAAI,CAAC,QAAQ,OAAO,KAAK,QAAQ,GAAG;AAClC,iBAAO,WAAW;AAClB,gBAAM,IAAI,UAAU,SAAS,SAAS,CAAC;AACvC,qBAAW;AAAA,QACb;AAEA,YAAI,CAAC,UAAU;AACb,gBAAM,kBAAkB,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,qDAAsD;AACvH,gBAAM,UAAU,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,qDAAqD;AAC9G,gBAAM,mBAAmB,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,kBAAkB;AACpF,gBAAM,oBAAoB,IAAI,OAAO,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC,KAAK;AAGxE,iBAAO,KAAK;AACV,sBAAU,IAAI,MAAM,MAAM,CAAC,EAAE,CAAC;AAC9B,uBAAW;AAGX,gBAAI,KAAK,QAAQ,UAAU;AACzB,yBAAW,SAAS,QAAQ,2BAA2B,IAAI;AAAA,YAC7D;AAGA,gBAAI,iBAAiB,KAAK,QAAQ,GAAG;AACnC;AAAA,YACF;AAGA,gBAAI,kBAAkB,KAAK,QAAQ,GAAG;AACpC;AAAA,YACF;AAGA,gBAAI,gBAAgB,KAAK,QAAQ,GAAG;AAClC;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,GAAG,GAAG;AACrB;AAAA,YACF;AAEA,gBAAI,SAAS,OAAO,MAAM,KAAK,UAAU,CAAC,SAAS,KAAK,GAAG;AACzD,8BAAgB,OAAO,SAAS,MAAM,MAAM;AAAA,YAC9C,OAAO;AAEL,kBAAI,WAAW;AACb;AAAA,cACF;AAGA,kBAAI,KAAK,OAAO,MAAM,KAAK,GAAG;AAC5B;AAAA,cACF;AACA,kBAAI,iBAAiB,KAAK,IAAI,GAAG;AAC/B;AAAA,cACF;AACA,kBAAI,kBAAkB,KAAK,IAAI,GAAG;AAChC;AAAA,cACF;AACA,kBAAI,QAAQ,KAAK,IAAI,GAAG;AACtB;AAAA,cACF;AAEA,8BAAgB,OAAO;AAAA,YACzB;AAEA,gBAAI,CAAC,aAAa,CAAC,SAAS,KAAK,GAAG;AAClC,0BAAY;AAAA,YACd;AAEA,mBAAO,UAAU;AACjB,kBAAM,IAAI,UAAU,QAAQ,SAAS,CAAC;AACtC,mBAAO,SAAS,MAAM,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,OAAO;AAEf,cAAI,mBAAmB;AACrB,iBAAK,QAAQ;AAAA,UACf,WAAW,YAAY,KAAK,GAAG,GAAG;AAChC,gCAAoB;AAAA,UACtB;AAAA,QACF;AAGA,YAAI,KAAK,QAAQ,KAAK;AACpB,mBAAS,cAAc,KAAK,YAAY;AACxC,cAAI,QAAQ;AACV,wBAAY,OAAO,CAAC,MAAM;AAC1B,2BAAe,aAAa,QAAQ,gBAAgB,EAAE;AAAA,UACxD;AAAA,QACF;AAEA,aAAK,MAAM,KAAK;AAAA,UACd,MAAM;AAAA,UACN;AAAA,UACA,MAAM,CAAC,CAAC;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA,QACR,CAAC;AAED,aAAK,OAAO;AAAA,MACd;AAGA,WAAK,MAAM,KAAK,MAAM,SAAS,CAAC,EAAE,MAAM,IAAI,UAAU;AACtD,MAAC,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC,EAAsB,OAAO,aAAa,UAAU;AACrF,WAAK,MAAM,KAAK,IAAI,UAAU;AAE9B,YAAM,IAAI,KAAK,MAAM;AAGrB,WAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,aAAK,MAAM,MAAM,MAAM;AACvB,aAAK,MAAM,CAAC,EAAE,SAAS,KAAK,MAAM,YAAY,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpE,YAAI,CAAC,KAAK,OAAO;AAEf,gBAAM,UAAU,KAAK,MAAM,CAAC,EAAE,OAAQ,OAAO,OAAK,EAAE,SAAS,OAAO;AACpE,gBAAM,wBAAwB,QAAQ,SAAS,KAAK,QAAQ,KAAK,OAAK,SAAS,KAAK,EAAE,GAAI,CAAC;AAE3F,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAGA,UAAI,KAAK,OAAO;AACd,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAK,MAAM,CAAC,EAAE,QAAQ;AAAA,QACxB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,KAAK,KAAyD;AAC5D,UAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,YAAM,QAAwC;AAAA,QAC5C,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK,IAAI,CAAC;AAAA,QACV,KAAK,CAAC,KAAK,QAAQ,cACb,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM;AAAA,QAC5D,MAAM,IAAI,CAAC;AAAA,MACb;AACA,UAAI,KAAK,QAAQ,UAAU;AACzB,cAAM,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;AACpF,cAAM,YAAY;AAClB,kBAAU,OAAO;AACjB,kBAAU,OAAO;AACjB,kBAAU,SAAS,KAAK,MAAM,OAAO,IAAI;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,IAAI,KAAqC;AACvC,UAAM,MAAM,KAAK,MAAM,MAAM,IAAI,KAAK,GAAG;AACzC,QAAI,KAAK;AACP,YAAM,MAAM,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,QAAQ,GAAG;AACpD,YAAM,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,YAAY,IAAI,EAAE,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AACnG,YAAM,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI,IAAI,CAAC;AAC/G,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,KAAuC;AAC3C,UAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,YAAM,OAAqB;AAAA,QACzB,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,QAAQ,WAAW,IAAI,CAAC,CAAC,EAAE,IAAI,OAAK;AAClC,iBAAO,EAAE,MAAM,EAAE;AAAA,QACnB,CAAC;AAAA,QACD,OAAO,IAAI,CAAC,EAAE,QAAQ,cAAc,EAAE,EAAE,MAAM,QAAQ;AAAA,QACtD,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC;AAAA,MACjF;AAEA,UAAI,KAAK,OAAO,WAAW,KAAK,MAAM,QAAQ;AAC5C,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI,GAAG,GAAG,GAAG;AACb,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAI,YAAY,KAAK,KAAK,MAAM,CAAC,CAAE,GAAG;AACpC,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB,WAAW,aAAa,KAAK,KAAK,MAAM,CAAC,CAAE,GAAG;AAC5C,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB,WAAW,YAAY,KAAK,KAAK,MAAM,CAAC,CAAE,GAAG;AAC3C,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB,OAAO;AACL,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB;AAAA,QACF;AAEA,YAAI,KAAK,KAAK;AACd,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAK,KAAK,CAAC,IAAI,WAAW,KAAK,KAAK,CAAC,GAAwB,KAAK,OAAO,MAAM,EAAE,IAAI,OAAK;AACxF,mBAAO,EAAE,MAAM,EAAE;AAAA,UACnB,CAAC;AAAA,QACH;AAKA,YAAI,KAAK,OAAO;AAChB,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAK,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,OAAO,KAAK,OAAO,CAAC,EAAE,IAAI;AAAA,QAC/D;AAGA,YAAI,KAAK,KAAK;AACd,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,gBAAM,KAAK,KAAK,CAAC;AACjB,eAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,gBAAI,CAAC,EAAE,SAAS,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,IAAI;AAAA,UAC/C;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,KAAyC;AAChD,UAAM,MAAM,KAAK,MAAM,MAAM,SAAS,KAAK,GAAG;AAC9C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI;AAAA,QACtC,MAAM,IAAI,CAAC;AAAA,QACX,QAAQ,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,KAA2C;AACnD,UAAM,MAAM,KAAK,MAAM,MAAM,UAAU,KAAK,GAAG;AAC/C,QAAI,KAAK;AACP,YAAM,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,OAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAClB,IAAI,CAAC;AACT,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAsC;AACzC,UAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,MAAM,IAAI,CAAC;AAAA,QACX,QAAQ,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAwC;AAC7C,UAAM,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG;AAC7C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAqC;AACvC,UAAM,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,UAAI,CAAC,KAAK,MAAM,MAAM,UAAU,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG;AACpD,aAAK,MAAM,MAAM,SAAS;AAAA,MAC5B,WAAW,KAAK,MAAM,MAAM,UAAU,UAAU,KAAK,IAAI,CAAC,CAAC,GAAG;AAC5D,aAAK,MAAM,MAAM,SAAS;AAAA,MAC5B;AACA,UAAI,CAAC,KAAK,MAAM,MAAM,cAAc,iCAAiC,KAAK,IAAI,CAAC,CAAC,GAAG;AACjF,aAAK,MAAM,MAAM,aAAa;AAAA,MAChC,WAAW,KAAK,MAAM,MAAM,cAAc,mCAAmC,KAAK,IAAI,CAAC,CAAC,GAAG;AACzF,aAAK,MAAM,MAAM,aAAa;AAAA,MAChC;AAEA,aAAO;AAAA,QACL,MAAM,KAAK,QAAQ,WACf,SACA;AAAA,QACJ,KAAK,IAAI,CAAC;AAAA,QACV,QAAQ,KAAK,MAAM,MAAM;AAAA,QACzB,YAAY,KAAK,MAAM,MAAM;AAAA,QAC7B,OAAO;AAAA,QACP,MAAM,KAAK,QAAQ,WACd,KAAK,QAAQ,YACZ,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAC7B,OAAO,IAAI,CAAC,CAAC,IACf,IAAI,CAAC;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,KAAqD;AACxD,UAAM,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,YAAM,aAAa,IAAI,CAAC,EAAE,KAAK;AAC/B,UAAI,CAAC,KAAK,QAAQ,YAAY,KAAK,KAAK,UAAU,GAAG;AAEnD,YAAI,CAAE,KAAK,KAAK,UAAU,GAAI;AAC5B;AAAA,QACF;AAGA,cAAM,aAAa,MAAM,WAAW,MAAM,GAAG,EAAE,GAAG,IAAI;AACtD,aAAK,WAAW,SAAS,WAAW,UAAU,MAAM,GAAG;AACrD;AAAA,QACF;AAAA,MACF,OAAO;AAEL,cAAM,iBAAiB,mBAAmB,IAAI,CAAC,GAAG,IAAI;AACtD,YAAI,iBAAiB,IAAI;AACvB,gBAAM,QAAQ,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI,IAAI;AAC9C,gBAAM,UAAU,QAAQ,IAAI,CAAC,EAAE,SAAS;AACxC,cAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc;AAC3C,cAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,KAAK;AAC3C,cAAI,CAAC,IAAI;AAAA,QACX;AAAA,MACF;AACA,UAAI,OAAO,IAAI,CAAC;AAChB,UAAI,QAAQ;AACZ,UAAI,KAAK,QAAQ,UAAU;AAEzB,cAAM,OAAO,gCAAgC,KAAK,IAAI;AAEtD,YAAI,MAAM;AACR,iBAAO,KAAK,CAAC;AACb,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,MACF,OAAO;AACL,gBAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,MACzC;AAEA,aAAO,KAAK,KAAK;AACjB,UAAI,KAAK,KAAK,IAAI,GAAG;AACnB,YAAI,KAAK,QAAQ,YAAY,CAAE,KAAK,KAAK,UAAU,GAAI;AAErD,iBAAO,KAAK,MAAM,CAAC;AAAA,QACrB,OAAO;AACL,iBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,QACzB;AAAA,MACF;AACA,aAAO,WAAW,KAAK;AAAA,QACrB,MAAM,OAAO,KAAK,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AAAA,QAC9D,OAAO,QAAQ,MAAM,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AAAA,MACnE,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,QAAQ,KAAa,OAAoE;AACvF,QAAI;AACJ,SAAK,MAAM,KAAK,MAAM,OAAO,QAAQ,KAAK,GAAG,OACvC,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG,IAAI;AAC/C,UAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,QAAQ,QAAQ,GAAG;AACjD,aAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,UAAI,CAAC,MAAM;AACT,cAAM,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC;AAC5B,eAAO;AAAA,UACL,MAAM;AAAA,UACN,KAAK;AAAA,UACL;AAAA,QACF;AAAA,MACF;AACA,aAAO,WAAW,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,KAAK;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,SAAS,KAAa,WAAmB,WAAW,IAA2C;AAC7F,QAAI,QAAQ,KAAK,MAAM,OAAO,SAAS,OAAO,KAAK,GAAG;AACtD,QAAI,CAAC;AAAO;AAGZ,QAAI,MAAM,CAAC,KAAK,SAAS,MAAM,eAAe;AAAG;AAEjD,UAAM,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK;AAEzC,QAAI,CAAC,YAAY,CAAC,YAAY,KAAK,MAAM,OAAO,YAAY,KAAK,QAAQ,GAAG;AAC1E,YAAM,UAAU,MAAM,CAAC,EAAE,SAAS;AAClC,UAAI,QAAQ,SAAS,aAAa,SAAS,gBAAgB;AAE3D,YAAM,SAAS,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,KAAK,MAAM,OAAO,SAAS,YAAY,KAAK,MAAM,OAAO,SAAS;AACvG,aAAO,YAAY;AAGnB,kBAAY,UAAU,MAAM,KAAK,IAAI,SAAS,OAAO;AAErD,cAAQ,QAAQ,OAAO,KAAK,SAAS,MAAM,MAAM;AAC/C,iBAAS,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC;AAE5E,YAAI,CAAC;AAAQ;AAEb,kBAAU,OAAO;AAEjB,YAAI,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AACxB,wBAAc;AACd;AAAA,QACF,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AAC/B,cAAI,UAAU,KAAK,GAAG,UAAU,WAAW,IAAI;AAC7C,6BAAiB;AACjB;AAAA,UACF;AAAA,QACF;AAEA,sBAAc;AAEd,YAAI,aAAa;AAAG;AAGpB,kBAAU,KAAK,IAAI,SAAS,UAAU,aAAa,aAAa;AAEhE,cAAM,MAAM,IAAI,MAAM,GAAG,UAAU,MAAM,QAAQ,UAAU,CAAC;AAG5D,YAAI,KAAK,IAAI,SAAS,OAAO,IAAI,GAAG;AAClC,gBAAMC,QAAO,IAAI,MAAM,GAAG,EAAE;AAC5B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA,MAAAA;AAAA,YACA,QAAQ,KAAK,MAAM,aAAaA,KAAI;AAAA,UACtC;AAAA,QACF;AAGA,cAAM,OAAO,IAAI,MAAM,GAAG,EAAE;AAC5B,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,QAAQ,KAAK,MAAM,aAAa,IAAI;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,KAA0C;AACjD,UAAM,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,UAAI,OAAO,IAAI,CAAC,EAAE,QAAQ,OAAO,GAAG;AACpC,YAAM,mBAAmB,OAAO,KAAK,IAAI;AACzC,YAAM,0BAA0B,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI;AACjE,UAAI,oBAAoB,yBAAyB;AAC/C,eAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,MAC1C;AACA,aAAO,OAAO,MAAM,IAAI;AACxB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,GAAG,KAAoC;AACrC,UAAM,MAAM,KAAK,MAAM,OAAO,GAAG,KAAK,GAAG;AACzC,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAqC;AACvC,UAAM,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG;AAC1C,QAAI,KAAK;AACP,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV,MAAM,IAAI,CAAC;AAAA,QACX,QAAQ,KAAK,MAAM,aAAa,IAAI,CAAC,CAAC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,KAAaC,SAA0D;AAC9E,UAAM,MAAM,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;AAC/C,QAAI,KAAK;AACP,UAAI,MAAM;AACV,UAAI,IAAI,CAAC,MAAM,KAAK;AAClB,eAAO,OAAO,KAAK,QAAQ,SAASA,QAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3D,eAAO,YAAY;AAAA,MACrB,OAAO;AACL,eAAO,OAAO,IAAI,CAAC,CAAC;AACpB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,KAAK;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAaA,SAA0D;AACzE,QAAI;AACJ,QAAI,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG,GAAG;AACzC,UAAI,MAAM;AACV,UAAI,IAAI,CAAC,MAAM,KAAK;AAClB,eAAO,OAAO,KAAK,QAAQ,SAASA,QAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3D,eAAO,YAAY;AAAA,MACrB,OAAO;AAEL,YAAI;AACJ,WAAG;AACD,wBAAc,IAAI,CAAC;AACnB,cAAI,CAAC,IAAI,KAAK,MAAM,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;AAAA,QACtD,SAAS,gBAAgB,IAAI,CAAC;AAC9B,eAAO,OAAO,IAAI,CAAC,CAAC;AACpB,YAAI,IAAI,CAAC,MAAM,QAAQ;AACrB,iBAAO,YAAY,IAAI,CAAC;AAAA,QAC1B,OAAO;AACL,iBAAO,IAAI,CAAC;AAAA,QACd;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,KAAK;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,KAAaC,cAA+D;AACrF,UAAM,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAC3C,QAAI,KAAK;AACP,UAAI;AACJ,UAAI,KAAK,MAAM,MAAM,YAAY;AAC/B,eAAO,KAAK,QAAQ,WAAY,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAK,IAAI,CAAC;AAAA,MACnH,OAAO;AACL,eAAO,OAAO,KAAK,QAAQ,cAAcA,aAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,MACvE;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,IAAI,CAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACjuBO,IAAM,QAAiF;AAAA,EAC5F,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,MAAM;AAAA,EAUN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AAAA;AAAA;AAAA,EAGV,YAAY;AAAA,EACZ,MAAM;AACR;AAEA,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,MAAM,KAAK,MAAM,GAAG,EACvB,QAAQ,SAAS,MAAM,MAAM,EAC7B,QAAQ,SAAS,MAAM,MAAM,EAC7B,SAAS;AAEZ,MAAM,SAAS;AACf,MAAM,gBAAgB,KAAK,eAAe,EACvC,QAAQ,QAAQ,MAAM,MAAM,EAC5B,SAAS;AAEZ,MAAM,OAAO,KAAK,MAAM,IAAI,EACzB,QAAQ,SAAS,MAAM,MAAM,EAC7B,QAAQ,MAAM,iEAAiE,EAC/E,QAAQ,OAAO,YAAY,MAAM,IAAI,SAAS,GAAG,EACjD,SAAS;AAEZ,MAAM,OAAO;AAMb,MAAM,WAAW;AACjB,MAAM,OAAO,KAAK,MAAM,MAAM,GAAG,EAC9B,QAAQ,WAAW,MAAM,QAAQ,EACjC,QAAQ,OAAO,MAAM,IAAI,EACzB,QAAQ,aAAa,0EAA0E,EAC/F,SAAS;AAEZ,MAAM,WAAW,KAAK,MAAM,QAAQ,EACjC,QAAQ,SAAS,MAAM,MAAM,EAC7B,SAAS;AAEZ,MAAM,YAAY,KAAK,MAAM,UAAU,EACpC,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,eAAe,EAClC,QAAQ,aAAa,EAAE,EACvB,QAAQ,UAAU,EAAE,EACpB,QAAQ,cAAc,SAAS,EAC/B,QAAQ,UAAU,gDAAgD,EAClE,QAAQ,QAAQ,wBAAwB,EACxC,QAAQ,QAAQ,6DAA6D,EAC7E,QAAQ,OAAO,MAAM,IAAI,EACzB,SAAS;AAEZ,MAAM,aAAa,KAAK,MAAM,UAAU,EACrC,QAAQ,aAAa,MAAM,SAAS,EACpC,SAAS;AAMZ,MAAM,SAAS,EAAE,GAAG,MAAM;AAM1B,MAAM,MAAM;AAAA,EACV,GAAG,MAAM;AAAA,EACT,OAAO;AAAA;AAGT;AAEA,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,KAAa,EAC3C,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,eAAe,EAClC,QAAQ,cAAc,SAAS,EAC/B,QAAQ,QAAQ,YAAY,EAC5B,QAAQ,UAAU,gDAAgD,EAClE,QAAQ,QAAQ,wBAAwB,EACxC,QAAQ,QAAQ,6DAA6D,EAC7E,QAAQ,OAAO,MAAM,IAAI,EACzB,SAAS;AAEZ,MAAM,IAAI,YAAY,KAAK,MAAM,UAAU,EACxC,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,eAAe,EAClC,QAAQ,aAAa,EAAE,EACvB,QAAQ,SAAS,MAAM,IAAI,KAAe,EAC1C,QAAQ,cAAc,SAAS,EAC/B,QAAQ,UAAU,gDAAgD,EAClE,QAAQ,QAAQ,wBAAwB,EACxC,QAAQ,QAAQ,6DAA6D,EAC7E,QAAQ,OAAO,MAAM,IAAI,EACzB,SAAS;AAKZ,MAAM,WAAW;AAAA,EACf,GAAG,MAAM;AAAA,EACT,MAAM;AAAA,IACJ;AAAA,EAEwE,EACvE,QAAQ,WAAW,MAAM,QAAQ,EACjC,QAAQ,QAAQ,mKAGkB,EAClC,SAAS;AAAA,EACZ,KAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EACR,UAAU;AAAA,EACV,WAAW,KAAK,MAAM,OAAO,UAAkB,EAC5C,QAAQ,MAAM,MAAM,EAAE,EACtB,QAAQ,WAAW,iBAAiB,EACpC,QAAQ,YAAY,MAAM,QAAQ,EAClC,QAAQ,cAAc,SAAS,EAC/B,QAAQ,WAAW,EAAE,EACrB,QAAQ,SAAS,EAAE,EACnB,QAAQ,SAAS,EAAE,EACnB,SAAS;AACd;AAOO,IAAM,SAAoF;AAAA,EAC/F,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,KAAK;AAAA,EACL,KAAK;AAAA;AAAA,EAML,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,UAAU;AAAA,IACR,QAAQ;AAAA;AAAA;AAAA,IAGR,WAAW;AAAA,IACX,WAAW;AAAA;AAAA,EACb;AAAA,EACA,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,MAAM;AAAA,EACN,aAAa;AACf;AAGA,OAAO,eAAe;AACtB,OAAO,cAAc,KAAK,OAAO,aAAa,GAAG,EAAE,QAAQ,gBAAgB,OAAO,YAAY,EAAE,SAAS;AAGzG,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,WAAW;AAElB,OAAO,WAAW,KAAK,MAAM,QAAQ,EAAE,QAAQ,aAAa,KAAK,EAAE,SAAS;AAE5E,OAAO,SAAS,SAAS,KAAK,OAAO,SAAS,QAAgB,GAAG,EAC9D,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,SAAS,YAAY,KAAK,OAAO,SAAS,WAAmB,IAAI,EACrE,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,SAAS,YAAY,KAAK,OAAO,SAAS,WAAmB,IAAI,EACrE,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,iBAAiB,KAAK,OAAO,gBAAwB,IAAI,EAC7D,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,WAAW,KAAK,OAAO,UAAU,IAAI,EACzC,QAAQ,UAAU,OAAO,YAAY,EACrC,SAAS;AAEZ,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,WAAW,KAAK,OAAO,QAAQ,EACnC,QAAQ,UAAU,OAAO,OAAO,EAChC,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AAEZ,OAAO,aAAa;AAEpB,OAAO,MAAM,KAAK,OAAO,GAAG,EACzB,QAAQ,WAAW,OAAO,QAAQ,EAClC,QAAQ,aAAa,OAAO,UAAU,EACtC,SAAS;AAEZ,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,SAAS;AAEhB,OAAO,OAAO,KAAK,OAAO,IAAI,EAC3B,QAAQ,SAAS,OAAO,MAAM,EAC9B,QAAQ,QAAQ,OAAO,KAAK,EAC5B,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AAEZ,OAAO,UAAU,KAAK,OAAO,OAAO,EACjC,QAAQ,SAAS,OAAO,MAAM,EAC9B,QAAQ,OAAO,MAAM,MAAM,EAC3B,SAAS;AAEZ,OAAO,SAAS,KAAK,OAAO,MAAM,EAC/B,QAAQ,OAAO,MAAM,MAAM,EAC3B,SAAS;AAEZ,OAAO,gBAAgB,KAAK,OAAO,eAAe,GAAG,EAClD,QAAQ,WAAW,OAAO,OAAO,EACjC,QAAQ,UAAU,OAAO,MAAM,EAC/B,SAAS;AAMZ,OAAO,SAAS,EAAE,GAAG,OAAO;AAM5B,OAAO,WAAW;AAAA,EAChB,GAAG,OAAO;AAAA,EACV,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,IAAI;AAAA,IACF,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,MAAM,KAAK,yBAAyB,EACjC,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AAAA,EACZ,SAAS,KAAK,+BAA+B,EAC1C,QAAQ,SAAS,OAAO,MAAM,EAC9B,SAAS;AACd;AAMA,OAAO,MAAM;AAAA,EACX,GAAG,OAAO;AAAA,EACV,QAAQ,KAAK,OAAO,MAAM,EAAE,QAAQ,MAAM,MAAM,EAAE,SAAS;AAAA,EAC3D,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,MAAM;AACR;AAEA,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,KAAa,GAAG,EAC9C,QAAQ,SAAS,OAAO,IAAI,eAAyB,EACrD,SAAS;AAKZ,OAAO,SAAS;AAAA,EACd,GAAG,OAAO;AAAA,EACV,IAAI,KAAK,OAAO,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,SAAS;AAAA,EAClD,MAAM,KAAK,OAAO,IAAI,IAAY,EAC/B,QAAQ,QAAQ,eAAe,EAC/B,QAAQ,WAAW,GAAG,EACtB,SAAS;AACd;;;ACjXA,SAAS,YAAY,MAAc;AACjC,SAAO,KAEJ,QAAQ,QAAQ,QAAQ,EAExB,QAAQ,OAAO,QAAQ,EAEvB,QAAQ,2BAA2B,UAAU,EAE7C,QAAQ,MAAM,QAAQ,EAEtB,QAAQ,gCAAgC,UAAU,EAElD,QAAQ,MAAM,QAAQ,EAEtB,QAAQ,UAAU,QAAQ;AAC/B;AAKA,SAAS,OAAO,MAAc;AAC5B,MAAI,MAAM,IACR,GACA;AAEF,QAAM,IAAI,KAAK;AACf,OAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,SAAK,KAAK,WAAW,CAAC;AACtB,QAAI,KAAK,OAAO,IAAI,KAAK;AACvB,WAAK,MAAM,GAAG,SAAS,EAAE;AAAA,IAC3B;AACA,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO;AACT;AAKO,IAAM,SAAN,MAAa;AAAA,EAYlB,YAAYC,UAAyB;AAGnC,SAAK,SAAS,CAAC;AACf,SAAK,OAAO,QAAQ,uBAAO,OAAO,IAAI;AACtC,SAAK,UAAUA,YAAW;AAC1B,SAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,IAAI,WAAW;AAClE,SAAK,YAAY,KAAK,QAAQ;AAC9B,SAAK,UAAU,UAAU,KAAK;AAC9B,SAAK,UAAU,QAAQ;AACvB,SAAK,cAAc,CAAC;AACpB,SAAK,QAAQ;AAAA,MACX,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,KAAK;AAAA,IACP;AAEA,UAAM,QAAQ;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,QAAQ,OAAO;AAAA,IACjB;AAEA,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,QAAQ,MAAM;AACpB,YAAM,SAAS,OAAO;AAAA,IACxB,WAAW,KAAK,QAAQ,KAAK;AAC3B,YAAM,QAAQ,MAAM;AACpB,UAAI,KAAK,QAAQ,QAAQ;AACvB,cAAM,SAAS,OAAO;AAAA,MACxB,OAAO;AACL,cAAM,SAAS,OAAO;AAAA,MACxB;AAAA,IACF;AACA,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,QAAe;AACxB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,IAAI,KAAaA,UAAyB;AAC/C,UAAMC,SAAQ,IAAI,OAAOD,QAAO;AAChC,WAAOC,OAAM,IAAI,GAAG;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,UAAU,KAAaD,UAAyB;AACrD,UAAMC,SAAQ,IAAI,OAAOD,QAAO;AAChC,WAAOC,OAAM,aAAa,GAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAa;AACf,UAAM,IACH,QAAQ,YAAY,IAAI;AAE3B,SAAK,YAAY,KAAK,KAAK,MAAM;AAEjC,QAAI;AACJ,WAAO,OAAO,KAAK,YAAY,MAAM,GAAG;AACtC,WAAK,aAAa,KAAK,KAAK,KAAK,MAAM;AAAA,IACzC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAOA,YAAY,KAAa,SAAkB,CAAC,GAAG;AAC7C,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,UAAU,EAAE;AAAA,IACvD,OAAO;AACL,YAAM,IAAI,QAAQ,gBAAgB,CAAC,GAAG,SAAS,SAAS;AACtD,eAAO,UAAU,OAAO,OAAO,KAAK,MAAM;AAAA,MAC5C,CAAC;AAAA,IACH;AAEA,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,WAAO,KAAK;AACV,UAAI,KAAK,QAAQ,cACZ,KAAK,QAAQ,WAAW,SACxB,KAAK,QAAQ,WAAW,MAAM,KAAK,CAAC,iBAAkD;AACvF,YAAI,QAAQ,aAAa,KAAK,EAAE,OAAO,KAAK,GAAG,KAAK,MAAM,GAAG;AAC3D,gBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,iBAAO,KAAK,KAAK;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC,GAAG;AACJ;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,MAAM,GAAG,GAAG;AACrC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,YAAI,MAAM,IAAI,WAAW,KAAK,OAAO,SAAS,GAAG;AAG/C,iBAAO,OAAO,SAAS,CAAC,EAAE,OAAO;AAAA,QACnC,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,YAAI,cAAc,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS;AAC9E,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,OAAO,GAAG,GAAG;AACtC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,QAAQ,GAAG,GAAG;AACvC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,GAAG,GAAG,GAAG;AAClC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,WAAW,GAAG,GAAG;AAC1C,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,cAAc,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS;AAC9E,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,WAAW,CAAC,KAAK,OAAO,MAAM,MAAM,GAAG,GAAG;AACxC,eAAK,OAAO,MAAM,MAAM,GAAG,IAAI;AAAA,YAC7B,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,UACf;AAAA,QACF;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,MAAM,GAAG,GAAG;AACrC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,GAAG,GAAG;AACxC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAIA,eAAS;AACT,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,YAAY;AACjE,YAAI,aAAa;AACjB,cAAM,UAAU,IAAI,MAAM,CAAC;AAC3B,YAAI;AACJ,aAAK,QAAQ,WAAW,WAAW,QAAQ,CAAC,kBAAkB;AAC5D,sBAAY,cAAc,KAAK,EAAE,OAAO,KAAK,GAAG,OAAO;AACvD,cAAI,OAAO,cAAc,YAAY,aAAa,GAAG;AAAE,yBAAa,KAAK,IAAI,YAAY,SAAS;AAAA,UAAG;AAAA,QACvG,CAAC;AACD,YAAI,aAAa,YAAY,cAAc,GAAG;AAC5C,mBAAS,IAAI,UAAU,GAAG,aAAa,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,UAAI,KAAK,MAAM,QAAQ,QAAQ,KAAK,UAAU,UAAU,MAAM,IAAI;AAChE,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,wBAAwB,UAAU,SAAS,aAAa;AAC1D,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,IAAI;AACrB,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA,+BAAwB,OAAO,WAAW,IAAI;AAC9C,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,UAAU,SAAS,QAAQ;AAC1C,oBAAU,OAAO,OAAO,MAAM;AAC9B,oBAAU,QAAQ,OAAO,MAAM;AAC/B,eAAK,YAAY,IAAI;AACrB,eAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAEA,UAAI,KAAK;AACP,cAAM,SAAS,4BAA4B,IAAI,WAAW,CAAC;AAC3D,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,MAAM,MAAM;AACpB;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,MAAM,MAAM;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAEA,SAAK,MAAM,MAAM;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAa,SAAkB,CAAC,GAAG;AACxC,SAAK,YAAY,KAAK,EAAE,KAAK,OAAO,CAAC;AACrC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,KAAa,SAAkB,CAAC,GAAY;AACvD,QAAI,OAAO,WAAW;AAGtB,QAAI,YAAY;AAChB,QAAI;AACJ,QAAI,cAAc;AAGlB,QAAI,KAAK,OAAO,OAAO;AACrB,YAAM,QAAQ,OAAO,KAAK,KAAK,OAAO,KAAK;AAC3C,UAAI,MAAM,SAAS,GAAG;AACpB,gBAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,cAAc,KAAK,SAAS,MAAM,MAAM;AAClF,cAAI,MAAM,SAAS,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG;AACrE,wBAAY,UAAU,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,SAAS;AAAA,UACjK;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,UAAU,KAAK,SAAS,MAAM,MAAM;AAC9E,kBAAY,UAAU,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,SAAS;AAAA,IAC7J;AAGA,YAAQ,QAAQ,KAAK,UAAU,MAAM,OAAO,eAAe,KAAK,SAAS,MAAM,MAAM;AACnF,kBAAY,UAAU,MAAM,GAAG,MAAM,KAAK,IAAI,OAAO,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,eAAe,SAAS;AAAA,IAC3H;AAEA,WAAO,KAAK;AACV,UAAI,CAAC,cAAc;AACjB,mBAAW;AAAA,MACb;AACA,qBAAe;AAGf,UAAI,KAAK,QAAQ,cACZ,KAAK,QAAQ,WAAW,UACxB,KAAK,QAAQ,WAAW,OAAO,KAAK,CAAC,iBAAiB;AACvD,YAAI,QAAQ,aAAa,KAAK,EAAE,OAAO,KAAK,GAAG,KAAK,MAAM,GAAG;AAC3D,gBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,iBAAO,KAAK,KAAK;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC,GAAG;AACJ;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,OAAO,GAAG,GAAG;AACtC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,MAAM,SAAS,UAAU,UAAU,SAAS,QAAQ;AACnE,oBAAU,OAAO,MAAM;AACvB,oBAAU,QAAQ,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,QAAQ,KAAK,KAAK,OAAO,KAAK,GAAG;AAC1D,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,MAAM,SAAS,UAAU,UAAU,SAAS,QAAQ;AACnE,oBAAU,OAAO,MAAM;AACvB,oBAAU,QAAQ,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,KAAK,WAAW,QAAQ,GAAG;AAC7D,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,GAAG,GAAG;AACxC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,GAAG,GAAG,GAAG;AAClC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,QAAQ,KAAK,UAAU,SAAS,KAAK,MAAM,GAAG;AAChD,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAGA,UAAI,CAAC,KAAK,MAAM,WAAW,QAAQ,KAAK,UAAU,IAAI,KAAK,MAAM,IAAI;AACnE,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,eAAO,KAAK,KAAK;AACjB;AAAA,MACF;AAIA,eAAS;AACT,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa;AAClE,YAAI,aAAa;AACjB,cAAM,UAAU,IAAI,MAAM,CAAC;AAC3B,YAAI;AACJ,aAAK,QAAQ,WAAW,YAAY,QAAQ,CAAC,kBAAkB;AAC7D,sBAAY,cAAc,KAAK,EAAE,OAAO,KAAK,GAAG,OAAO;AACvD,cAAI,OAAO,cAAc,YAAY,aAAa,GAAG;AAAE,yBAAa,KAAK,IAAI,YAAY,SAAS;AAAA,UAAG;AAAA,QACvG,CAAC;AACD,YAAI,aAAa,YAAY,cAAc,GAAG;AAC5C,mBAAS,IAAI,UAAU,GAAG,aAAa,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,UAAI,QAAQ,KAAK,UAAU,WAAW,QAAQ,WAAW,GAAG;AAC1D,cAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,YAAI,MAAM,IAAI,MAAM,EAAE,MAAM,KAAK;AAC/B,qBAAW,MAAM,IAAI,MAAM,EAAE;AAAA,QAC/B;AACA,uBAAe;AACf,oBAAY,OAAO,OAAO,SAAS,CAAC;AACpC,YAAI,aAAa,UAAU,SAAS,QAAQ;AAC1C,oBAAU,OAAO,MAAM;AACvB,oBAAU,QAAQ,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AAEA,UAAI,KAAK;AACP,cAAM,SAAS,4BAA4B,IAAI,WAAW,CAAC;AAC3D,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,MAAM,MAAM;AACpB;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,MAAM,MAAM;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;;;AC5fO,IAAM,YAAN,MAAgB;AAAA,EAErB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAAA,EAC5B;AAAA,EAEA,KAAK,MAAc,YAAgC,SAA0B;AAC3E,UAAM,QAAQ,cAAc,IAAI,MAAM,KAAK,EAAG,CAAC;AAC/C,QAAI,KAAK,QAAQ,WAAW;AAC1B,YAAM,MAAM,KAAK,QAAQ,UAAU,MAAM,IAAI;AAC7C,UAAI,OAAO,QAAQ,QAAQ,MAAM;AAC/B,kBAAU;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,KAAK,QAAQ,OAAO,EAAE,IAAI;AAEjC,QAAI,CAAC,MAAM;AACT,aAAO,iBACF,UAAU,OAAO,OAAO,MAAM,IAAI,KACnC;AAAA,IACN;AAEA,WAAO,uBACH,KAAK,QAAQ,aACb,OAAO,IAAI,IACX,QACC,UAAU,OAAO,OAAO,MAAM,IAAI,KACnC;AAAA,EACN;AAAA,EAEA,WAAW,OAAuB;AAChC,WAAO;AAAA,EAAiB;AAAA;AAAA,EAC1B;AAAA,EAEA,KAAK,MAAcC,QAA0B;AAC3C,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAc,OAAe,KAAa,SAA0B;AAC1E,QAAI,KAAK,QAAQ,WAAW;AAC1B,YAAM,KAAK,KAAK,QAAQ,eAAe,QAAQ,KAAK,GAAG;AACvD,aAAO,KAAK,aAAa,OAAO,UAAU;AAAA;AAAA,IAC5C;AAGA,WAAO,KAAK,SAAS,UAAU;AAAA;AAAA,EACjC;AAAA,EAEA,KAAa;AACX,WAAO,KAAK,QAAQ,QAAQ,YAAY;AAAA,EAC1C;AAAA,EAEA,KAAK,MAAc,SAAkB,OAA4B;AAC/D,UAAM,OAAO,UAAU,OAAO,MAC5B,WAAY,WAAW,UAAU,IAAM,aAAa,QAAQ,MAAO;AACrE,WAAO,MAAM,OAAO,WAAW,QAAQ,OAAO,OAAO,OAAO;AAAA,EAC9D;AAAA,EAEA,SAAS,MAAc,MAAe,SAA0B;AAC9D,WAAO,OAAO;AAAA;AAAA,EAChB;AAAA,EAEA,SAAS,SAA0B;AACjC,WAAO,aACF,UAAU,gBAAgB,MAC3B,iCACC,KAAK,QAAQ,QAAQ,OAAO,MAC7B;AAAA,EACN;AAAA,EAEA,UAAU,MAAsB;AAC9B,WAAO,MAAM;AAAA;AAAA,EACf;AAAA,EAEA,MAAM,QAAgB,MAAsB;AAC1C,QAAI;AAAM,aAAO,UAAU;AAE3B,WAAO,uBAEH,SACA,eACA,OACA;AAAA,EACN;AAAA,EAEA,SAAS,SAAyB;AAChC,WAAO;AAAA,EAAS;AAAA;AAAA,EAClB;AAAA,EAEA,UAAU,SAAiB,OAGhB;AACT,UAAM,OAAO,MAAM,SAAS,OAAO;AACnC,UAAM,MAAM,MAAM,QACd,IAAI,eAAe,MAAM,YACzB,IAAI;AACR,WAAO,MAAM,UAAU,KAAK;AAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAsB;AAC3B,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,GAAG,MAAsB;AACvB,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,SAAS,MAAsB;AAC7B,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,KAAa;AACX,WAAO,KAAK,QAAQ,QAAQ,UAAU;AAAA,EACxC;AAAA,EAEA,IAAI,MAAsB;AACxB,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,KAAK,MAAc,OAAkC,MAAsB;AACzE,WAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ,SAAS,IAAI;AACjE,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AACA,QAAI,MAAM,cAAc,OAAO;AAC/B,QAAI,OAAO;AACT,aAAO,aAAa,QAAQ;AAAA,IAC9B;AACA,WAAO,MAAM,OAAO;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAc,OAAsB,MAAsB;AAC9D,WAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ,SAAS,IAAI;AACjE,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,aAAa,cAAc;AACrC,QAAI,OAAO;AACT,aAAO,WAAW;AAAA,IACpB;AACA,WAAO,KAAK,QAAQ,QAAQ,OAAO;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAuB;AAC1B,WAAO;AAAA,EACT;AACF;;;AClKO,IAAM,gBAAN,MAAoB;AAAA;AAAA,EAEzB,OAAO,MAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,GAAG,MAAc;AACf,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,MAAc;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAc;AAChB,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAc;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAc;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAc,OAAkC,MAAc;AACjE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAAc,OAAsB,MAAc;AACtD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,KAAK;AACH,WAAO;AAAA,EACT;AACF;;;ACpCO,IAAM,WAAN,MAAe;AAAA,EAGpB,cAAc;AACZ,SAAK,OAAO,CAAC;AAAA,EACf;AAAA,EAEA,UAAU,OAAe;AACvB,WAAO,MACJ,YAAY,EACZ,KAAK,EAEL,QAAQ,mBAAmB,EAAE,EAE7B,QAAQ,iEAAiE,EAAE,EAC3E,QAAQ,OAAO,GAAG;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,cAAsB,UAA+B;AACnE,QAAI,OAAO;AACX,QAAI,uBAAuB;AAC3B,QAAI,KAAK,KAAK,eAAe,IAAI,GAAG;AAClC,6BAAuB,KAAK,KAAK,YAAY;AAC7C,SAAG;AACD;AACA,eAAO,eAAe,MAAM;AAAA,MAC9B,SAAS,KAAK,KAAK,eAAe,IAAI;AAAA,IACxC;AACA,QAAI,CAAC,UAAU;AACb,WAAK,KAAK,YAAY,IAAI;AAC1B,WAAK,KAAK,IAAI,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,OAAeC,WAA0B,CAAC,GAAG;AAChD,UAAM,OAAO,KAAK,UAAU,KAAK;AACjC,WAAO,KAAK,gBAAgB,MAAMA,SAAQ,MAAM;AAAA,EAClD;AACF;;;ACrCO,IAAM,UAAN,MAAc;AAAA,EAKnB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAC1B,SAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,IAAI,UAAU;AAC/D,SAAK,WAAW,KAAK,QAAQ;AAC7B,SAAK,SAAS,UAAU,KAAK;AAC7B,SAAK,eAAe,IAAI,cAAc;AACtC,SAAK,UAAU,IAAI,SAAS;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAM,QAAiBA,UAAyB;AACrD,UAAMC,UAAS,IAAI,QAAQD,QAAO;AAClC,WAAOC,QAAO,MAAM,MAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,YAAY,QAAiBD,UAAyB;AAC3D,UAAMC,UAAS,IAAI,QAAQD,QAAO;AAClC,WAAOC,QAAO,YAAY,MAAM;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAiB,MAAM,MAAc;AACzC,QAAI,MAAM,IACR,GACA,GACA,GACA,IACA,IACA,KACA,MACA,QACA,MACA,OACA,SACA,OACA,OACA,UACA,MACA,SACA,MACA,UACA;AAEF,UAAM,IAAI,OAAO;AACjB,SAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAQ,OAAO,CAAC;AAGhB,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,GAAG;AACjH,cAAM,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK,GAAG,KAAK;AAChF,YAAI,QAAQ,SAAS,CAAC,CAAC,SAAS,MAAM,WAAW,QAAQ,SAAS,cAAc,QAAQ,QAAQ,aAAa,MAAM,EAAE,SAAS,MAAM,IAAI,GAAG;AACzI,iBAAO,OAAO;AACd;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK,SAAS;AACZ;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,KAAK,SAAS,GAAG;AACxB;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,iBAAO,KAAK,SAAS;AAAA,YACnB,KAAK,YAAY,MAAM,MAAO;AAAA,YAC9B,MAAM;AAAA,YACN,SAAS,KAAK,YAAY,MAAM,QAAS,KAAK,YAAY,CAAC;AAAA,YAC3D,KAAK;AAAA,UAAO;AACd;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,KAAK,SAAS;AAAA,YAAK,MAAM;AAAA,YAC9B,MAAM;AAAA,YACN,CAAC,CAAC,MAAM;AAAA,UAAO;AACjB;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,mBAAS;AAGT,iBAAO;AACP,eAAK,MAAM,OAAO;AAClB,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,oBAAQ,KAAK,SAAS;AAAA,cACpB,KAAK,YAAY,MAAM,OAAO,CAAC,EAAE,MAAM;AAAA,cACvC,EAAE,QAAQ,MAAM,OAAO,MAAM,MAAM,CAAC,EAAE;AAAA,YACxC;AAAA,UACF;AACA,oBAAU,KAAK,SAAS,SAAS,IAAI;AAErC,iBAAO;AACP,eAAK,MAAM,KAAK;AAChB,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,kBAAM,MAAM,KAAK,CAAC;AAElB,mBAAO;AACP,iBAAK,IAAI;AACT,iBAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,sBAAQ,KAAK,SAAS;AAAA,gBACpB,KAAK,YAAY,IAAI,CAAC,EAAE,MAAM;AAAA,gBAC9B,EAAE,QAAQ,OAAO,OAAO,MAAM,MAAM,CAAC,EAAE;AAAA,cACzC;AAAA,YACF;AAEA,oBAAQ,KAAK,SAAS,SAAS,IAAI;AAAA,UACrC;AACA,iBAAO,KAAK,SAAS,MAAM,QAAQ,IAAI;AACvC;AAAA,QACF;AAAA,QACA,KAAK,cAAc;AACjB,iBAAO,KAAK,MAAM,MAAM,MAAO;AAC/B,iBAAO,KAAK,SAAS,WAAW,IAAI;AACpC;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,oBAAU,MAAM;AAChB,kBAAQ,MAAM;AACd,kBAAQ,MAAM;AACd,eAAK,MAAM,MAAM;AAEjB,iBAAO;AACP,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,mBAAO,MAAM,MAAM,CAAC;AACpB,sBAAU,KAAK;AACf,mBAAO,KAAK;AAEZ,uBAAW;AACX,gBAAI,KAAK,MAAM;AACb,yBAAW,KAAK,SAAS,SAAS,CAAC,CAAC,OAAO;AAC3C,kBAAI,OAAO;AACT,oBAAI,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,SAAS,aAAa;AACjE,uBAAK,OAAO,CAAC,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE;AACtD,sBAAI,KAAK,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,EAAE,OAAO,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,QAAQ;AACzG,yBAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAAA,kBAC5E;AAAA,gBACF,OAAO;AACL,uBAAK,OAAO,QAAQ;AAAA,oBAClB,MAAM;AAAA,oBACN,MAAM;AAAA,kBACR,CAAgB;AAAA,gBAClB;AAAA,cACF,OAAO;AACL,4BAAY;AAAA,cACd;AAAA,YACF;AAEA,wBAAY,KAAK,MAAM,KAAK,QAAQ,KAAK;AACzC,oBAAQ,KAAK,SAAS,SAAS,UAAU,MAAM,CAAC,CAAC,OAAO;AAAA,UAC1D;AAEA,iBAAO,KAAK,SAAS,KAAK,MAAM,SAAS,KAAK;AAC9C;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,KAAK,SAAS,KAAK,MAAM,MAAM,MAAM,KAAK;AACjD;AAAA,QACF;AAAA,QACA,KAAK,aAAa;AAChB,iBAAO,KAAK,SAAS,UAAU,KAAK,YAAY,MAAM,MAAO,CAAE;AAC/D;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM,IAAI,MAAM;AAC7D,iBAAO,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,EAAE,SAAS,QAAQ;AACjD,oBAAQ,OAAO,EAAE,CAAC;AAClB,oBAAQ,QAAQ,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM,IAAI,MAAM;AAAA,UACxE;AACA,iBAAO,MAAM,KAAK,SAAS,UAAU,IAAK,IAAI;AAC9C;AAAA,QACF;AAAA,QAEA,SAAS;AACP,gBAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,cAAI,KAAK,QAAQ,QAAQ;AACvB,oBAAQ,MAAM,MAAM;AACpB,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,IAAI,MAAM,MAAM;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,QAAiB,UAA8C;AACzE,eAAW,YAAY,KAAK;AAC5B,QAAI,MAAM,IACR,GACA,OACA;AAEF,UAAM,IAAI,OAAO;AACjB,SAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAQ,OAAO,CAAC;AAGhB,UAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,GAAG;AACjH,cAAM,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK,GAAG,KAAK;AAChF,YAAI,QAAQ,SAAS,CAAC,CAAC,UAAU,QAAQ,QAAQ,SAAS,UAAU,MAAM,YAAY,MAAM,OAAO,MAAM,EAAE,SAAS,MAAM,IAAI,GAAG;AAC/H,iBAAO,OAAO;AACd;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK,UAAU;AACb,iBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,SAAS,KAAK,MAAM,MAAM,MAAM,OAAO,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AACxF;AAAA,QACF;AAAA,QACA,KAAK,SAAS;AACZ,iBAAO,SAAS,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AACzD;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,iBAAO,SAAS,OAAO,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AACjE;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,SAAS,GAAG,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AAC7D;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,iBAAO,SAAS,SAAS,MAAM,IAAI;AACnC;AAAA,QACF;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,SAAS,GAAG;AACnB;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,iBAAO,SAAS,IAAI,KAAK,YAAY,MAAM,QAAS,QAAQ,CAAE;AAC9D;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,iBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,cAAI,KAAK,QAAQ,QAAQ;AACvB,oBAAQ,MAAM,MAAM;AACpB,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,IAAI,MAAM,MAAM;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;;;AC/RO,IAAM,SAAN,MAAa;AAAA,EAGlB,YAAYC,UAAyB;AACnC,SAAK,UAAUA,YAAW;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,UAA4C;AACrD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,MAAwC;AAClD,WAAO;AAAA,EACT;AACF;AAzBa,OAOJ,mBAAmB,oBAAI,IAAI;AAAA,EAChC;AAAA,EACA;AACF,CAAC;;;ACbH;AAoBO,IAAM,SAAN,MAAa;AAAA,EAiBlB,eAAe,MAAyB;AAoMxC;AAiIA;AArVA,oBAAW,aAAa;AACxB,mBAAU,KAAK;AAEf,iBAAQ,sBAAK,kCAAL,WAAoB,OAAO,KAAK,QAAQ;AAChD,uBAAc,sBAAK,kCAAL,WAAoB,OAAO,WAAW,QAAQ;AAE5D,kBAAS;AACT,kBAAS,QAAQ;AACjB,oBAAW;AACX,wBAAe;AACf,iBAAQ;AACR,iBAAQ,OAAO;AACf,qBAAY;AACZ,mBAAU;AACV,iBAAQ;AAGN,SAAK,IAAI,GAAG,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAsB,QAA8B,UAAqC;AACvF,QAAI,SAAc,CAAC;AACnB,eAAW,SAAS,QAAQ;AAC1B,eAAS,OAAO,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC;AACjD,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK,SAAS;AACZ,qBAAW,QAAQ,MAAM,QAAQ;AAC/B,qBAAS,OAAO,OAAO,KAAK,WAAW,KAAK,QAAS,QAAQ,CAAC;AAAA,UAChE;AACA,qBAAW,OAAO,MAAM,MAAM;AAC5B,uBAAW,QAAQ,KAAK;AACtB,uBAAS,OAAO,OAAO,KAAK,WAAW,KAAK,QAAS,QAAQ,CAAC;AAAA,YAChE;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,mBAAS,OAAO,OAAO,KAAK,WAAW,MAAM,OAAO,QAAQ,CAAC;AAC7D;AAAA,QACF;AAAA,QACA,SAAS;AACP,cAAI,KAAK,SAAS,cAAc,KAAK,SAAS,WAAW,eAAe,KAAK,SAAS,WAAW,YAAY,MAAM,IAAI,GAAG;AACxH,iBAAK,SAAS,WAAW,YAAY,MAAM,IAAI,EAAE,QAAQ,CAAC,gBAAgB;AAExE,uBAAS,OAAO,OAAO,KAAK,WAAW,MAAM,WAAW,GAAG,QAAQ,CAAC;AAAA,YACtE,CAAC;AAAA,UACH,WAAW,MAAM,QAAQ;AACvB,qBAAS,OAAO,OAAO,KAAK,WAAW,MAAM,QAAQ,QAAQ,CAAC;AAAA,UAChE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAyB;AAC9B,UAAM,aAAuD,KAAK,SAAS,cAAc,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,EAAE;AAE1H,SAAK,QAAQ,CAAC,SAAS;AAErB,YAAM,OAAO,EAAE,GAAG,KAAK;AAGvB,WAAK,QAAQ,KAAK,SAAS,SAAS,KAAK,SAAS;AAGlD,UAAI,KAAK,YAAY;AACnB,aAAK,WAAW,QAAQ,CAAC,QAAQ;AAC/B,cAAI,CAAC,IAAI,MAAM;AACb,kBAAM,IAAI,MAAM,yBAAyB;AAAA,UAC3C;AACA,cAAI,cAAc,KAAK;AACrB,kBAAM,eAAe,WAAW,UAAU,IAAI,IAAI;AAClD,gBAAI,cAAc;AAEhB,yBAAW,UAAU,IAAI,IAAI,IAAI,YAAYC,OAAM;AACjD,oBAAI,MAAM,IAAI,SAAS,MAAM,MAAMA,KAAI;AACvC,oBAAI,QAAQ,OAAO;AACjB,wBAAM,aAAa,MAAM,MAAMA,KAAI;AAAA,gBACrC;AACA,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AACL,yBAAW,UAAU,IAAI,IAAI,IAAI,IAAI;AAAA,YACvC;AAAA,UACF;AACA,cAAI,eAAe,KAAK;AACtB,gBAAI,CAAC,IAAI,SAAU,IAAI,UAAU,WAAW,IAAI,UAAU,UAAW;AACnE,oBAAM,IAAI,MAAM,6CAA6C;AAAA,YAC/D;AACA,gBAAI,WAAW,IAAI,KAAK,GAAG;AACzB,yBAAW,IAAI,KAAK,EAAE,QAAQ,IAAI,SAAS;AAAA,YAC7C,OAAO;AACL,yBAAW,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS;AAAA,YACxC;AACA,gBAAI,IAAI,OAAO;AACb,kBAAI,IAAI,UAAU,SAAS;AACzB,oBAAI,WAAW,YAAY;AACzB,6BAAW,WAAW,KAAK,IAAI,KAAM;AAAA,gBACvC,OAAO;AACL,6BAAW,aAAa,CAAC,IAAI,KAAM;AAAA,gBACrC;AAAA,cACF,WAAW,IAAI,UAAU,UAAU;AACjC,oBAAI,WAAW,aAAa;AAC1B,6BAAW,YAAY,KAAK,IAAI,KAAM;AAAA,gBACxC,OAAO;AACL,6BAAW,cAAc,CAAC,IAAI,KAAM;AAAA,gBACtC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI,iBAAiB,OAAO,IAAI,aAAa;AAC3C,uBAAW,YAAY,IAAI,IAAI,IAAI,IAAI;AAAA,UACzC;AAAA,QACF,CAAC;AACD,aAAK,aAAa;AAAA,MACpB;AAGA,UAAI,KAAK,UAAU;AACjB,cAAM,WAAW,KAAK,SAAS,YAAY,IAAI,UAAU,KAAK,QAAQ;AACtE,mBAAW,QAAQ,KAAK,UAAU;AAChC,gBAAM,eAAe,KAAK,SAAS,IAAyC;AAC5E,gBAAM,cAAc;AACpB,gBAAM,eAAe,SAAS,WAAW;AAEzC,mBAAS,WAAW,IAAI,IAAIA,UAAoB;AAC9C,gBAAI,MAAM,aAAa,MAAM,UAAUA,KAAI;AAC3C,gBAAI,QAAQ,OAAO;AACjB,oBAAM,aAAa,MAAM,UAAUA,KAAI;AAAA,YACzC;AACA,mBAAO,OAAO;AAAA,UAChB;AAAA,QACF;AACA,aAAK,WAAW;AAAA,MAClB;AACA,UAAI,KAAK,WAAW;AAClB,cAAM,YAAY,KAAK,SAAS,aAAa,IAAI,WAAW,KAAK,QAAQ;AACzE,mBAAW,QAAQ,KAAK,WAAW;AACjC,gBAAM,gBAAgB,KAAK,UAAU,IAA0C;AAC/E,gBAAM,eAAe;AACrB,gBAAM,gBAAgB,UAAU,YAAY;AAE5C,oBAAU,YAAY,IAAI,IAAIA,UAAoB;AAChD,gBAAI,MAAM,cAAc,MAAM,WAAWA,KAAI;AAC7C,gBAAI,QAAQ,OAAO;AACjB,oBAAM,cAAc,MAAM,WAAWA,KAAI;AAAA,YAC3C;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAK,YAAY;AAAA,MACnB;AAGA,UAAI,KAAK,OAAO;AACd,cAAM,QAAQ,KAAK,SAAS,SAAS,IAAI,OAAO;AAChD,mBAAW,QAAQ,KAAK,OAAO;AAC7B,gBAAM,YAAY,KAAK,MAAM,IAAsC;AACnE,gBAAM,WAAW;AACjB,gBAAM,WAAW,MAAM,QAAQ;AAC/B,cAAI,OAAO,iBAAiB,IAAI,IAAI,GAAG;AACrC,kBAAM,QAAwC,IAAI,CAAC,QAA4B;AAC7E,kBAAI,KAAK,SAAS,OAAO;AACvB,uBAAO,QAAQ,QAAQ,UAAU,KAAK,OAAO,GAAG,CAAC,EAAE,KAAK,CAAAC,SAAO;AAC7D,yBAAO,SAAS,KAAK,OAAOA,IAAG;AAAA,gBACjC,CAAC;AAAA,cACH;AAEA,oBAAM,MAAM,UAAU,KAAK,OAAO,GAAG;AACrC,qBAAO,SAAS,KAAK,OAAO,GAAG;AAAA,YACjC;AAAA,UACF,OAAO;AACL,kBAAM,QAAQ,IAAI,IAAID,UAAoB;AACxC,kBAAI,MAAM,UAAU,MAAM,OAAOA,KAAI;AACrC,kBAAI,QAAQ,OAAO;AACjB,sBAAM,SAAS,MAAM,OAAOA,KAAI;AAAA,cAClC;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,aAAK,QAAQ;AAAA,MACf;AAGA,UAAI,KAAK,YAAY;AACnB,cAAME,cAAa,KAAK,SAAS;AACjC,aAAK,aAAa,SAAS,OAAO;AAChC,cAAI,SAAsC,CAAC;AAC3C,iBAAO,KAAK,KAAK,WAAY,KAAK,MAAM,KAAK,CAAC;AAC9C,cAAIA,aAAY;AACd,qBAAS,OAAO,OAAOA,YAAW,KAAK,MAAM,KAAK,CAAC;AAAA,UACrD;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,WAAK,WAAW,EAAE,GAAG,KAAK,UAAU,GAAG,KAAK;AAAA,IAC9C,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,KAAoB;AAC7B,SAAK,WAAW,EAAE,GAAG,KAAK,UAAU,GAAG,IAAI;AAC3C,WAAO;AAAA,EACT;AA+JF;AA7JE;AAAA,mBAAc,SAACC,QAAuEC,SAA8D;AAClJ,SAAO,CAAC,KAAa,eAAmE,aAA4F;AAClL,QAAI,OAAO,kBAAkB,YAAY;AACvC,iBAAW;AACX,sBAAgB;AAAA,IAClB;AAEA,UAAM,UAAU,EAAE,GAAG,cAAc;AACnC,UAAM,MAAM,EAAE,GAAG,KAAK,UAAU,GAAG,QAAQ;AAC3C,UAAM,aAAa,sBAAK,sBAAL,WAAc,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,OAAO;AAG5D,QAAI,OAAO,QAAQ,eAAe,QAAQ,MAAM;AAC9C,aAAO,WAAW,IAAI,MAAM,gDAAgD,CAAC;AAAA,IAC/E;AACA,QAAI,OAAO,QAAQ,UAAU;AAC3B,aAAO,WAAW,IAAI,MAAM,0CACxB,OAAO,UAAU,SAAS,KAAK,GAAG,IAAI,mBAAmB,CAAC;AAAA,IAChE;AAEA,sBAAkB,KAAK,QAAQ;AAE/B,QAAI,IAAI,OAAO;AACb,UAAI,MAAM,UAAU;AAAA,IACtB;AAEA,QAAI,UAAU;AACZ,YAAM,YAAY,IAAI;AACtB,UAAI;AAEJ,UAAI;AACF,YAAI,IAAI,OAAO;AACb,gBAAM,IAAI,MAAM,WAAW,GAAG;AAAA,QAChC;AACA,iBAASD,OAAM,KAAK,GAAG;AAAA,MACzB,SAAS,GAAP;AACA,eAAO,WAAW,CAAU;AAAA,MAC9B;AAEA,YAAM,OAAO,CAAC,QAAgB;AAC5B,YAAI;AAEJ,YAAI,CAAC,KAAK;AACR,cAAI;AACF,gBAAI,IAAI,YAAY;AAClB,mBAAK,WAAW,QAAQ,IAAI,UAAU;AAAA,YACxC;AACA,kBAAMC,QAAO,QAAQ,GAAG;AACxB,gBAAI,IAAI,OAAO;AACb,oBAAM,IAAI,MAAM,YAAY,GAAG;AAAA,YACjC;AAAA,UACF,SAAS,GAAP;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,YAAI,YAAY;AAEhB,eAAO,MACH,WAAW,GAAG,IACd,SAAU,MAAM,GAAG;AAAA,MACzB;AAEA,UAAI,CAAC,aAAa,UAAU,SAAS,GAAG;AACtC,eAAO,KAAK;AAAA,MACd;AAEA,aAAO,IAAI;AAEX,UAAI,CAAC,OAAO;AAAQ,eAAO,KAAK;AAEhC,UAAI,UAAU;AACd,WAAK,WAAW,QAAQ,CAAC,UAAU;AACjC,YAAI,MAAM,SAAS,QAAQ;AACzB;AACA,qBAAW,MAAM;AACf,sBAAU,MAAM,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS;AAC/C,kBAAI,KAAK;AACP,uBAAO,KAAK,GAAG;AAAA,cACjB;AACA,kBAAI,QAAQ,QAAQ,SAAS,MAAM,MAAM;AACvC,sBAAM,OAAO;AACb,sBAAM,UAAU;AAAA,cAClB;AAEA;AACA,kBAAI,YAAY,GAAG;AACjB,qBAAK;AAAA,cACP;AAAA,YACF,CAAC;AAAA,UACH,GAAG,CAAC;AAAA,QACN;AAAA,MACF,CAAC;AAED,UAAI,YAAY,GAAG;AACjB,aAAK;AAAA,MACP;AAEA;AAAA,IACF;AAEA,QAAI,IAAI,OAAO;AACb,aAAO,QAAQ,QAAQ,IAAI,QAAQ,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAC/D,KAAK,CAAAC,SAAOF,OAAME,MAAK,GAAG,CAAC,EAC3B,KAAK,YAAU,IAAI,aAAa,QAAQ,IAAI,KAAK,WAAW,QAAQ,IAAI,UAAU,CAAC,EAAE,KAAK,MAAM,MAAM,IAAI,MAAM,EAChH,KAAK,YAAUD,QAAO,QAAQ,GAAG,CAAC,EAClC,KAAK,UAAQ,IAAI,QAAQ,IAAI,MAAM,YAAY,IAAI,IAAI,IAAI,EAC3D,MAAM,UAAU;AAAA,IACrB;AAEA,QAAI;AACF,UAAI,IAAI,OAAO;AACb,cAAM,IAAI,MAAM,WAAW,GAAG;AAAA,MAChC;AACA,YAAM,SAASD,OAAM,KAAK,GAAG;AAC7B,UAAI,IAAI,YAAY;AAClB,aAAK,WAAW,QAAQ,IAAI,UAAU;AAAA,MACxC;AACA,UAAI,OAAOC,QAAO,QAAQ,GAAG;AAC7B,UAAI,IAAI,OAAO;AACb,eAAO,IAAI,MAAM,YAAY,IAAI;AAAA,MACnC;AACA,aAAO;AAAA,IACT,SAAS,GAAP;AACA,aAAO,WAAW,CAAU;AAAA,IAC9B;AAAA,EACF;AACF;AAEA;AAAA,aAAQ,SAAC,QAAiB,OAAgB,UAA2B;AACnE,SAAO,CAAC,MAAmD;AACzD,MAAE,WAAW;AAEb,QAAI,QAAQ;AACV,YAAM,MAAM,mCACR,OAAO,EAAE,UAAU,IAAI,IAAI,IAC3B;AACJ,UAAI,OAAO;AACT,eAAO,QAAQ,QAAQ,GAAG;AAAA,MAC5B;AACA,UAAI,UAAU;AACZ,iBAAS,MAAM,GAAG;AAClB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,OAAO;AACT,aAAO,QAAQ,OAAO,CAAC;AAAA,IACzB;AACA,QAAI,UAAU;AACZ,eAAS,CAAC;AACV;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;;;ACnXF,IAAM,iBAAiB,IAAI,OAAO;AAwC3B,SAAS,OAAO,KAAa,KAAsC,UAA6E;AACrJ,SAAO,eAAe,MAAM,KAAK,KAAK,QAAQ;AAChD;AAOA,OAAO,UACP,OAAO,aAAa,SAASE,UAAwB;AACnD,iBAAe,WAAWA,QAAO;AACjC,SAAO,WAAW,eAAe;AACjC,iBAAe,OAAO,QAAQ;AAC9B,SAAO;AACT;AAKA,OAAO,cAAc;AAErB,OAAO,WAAW;AAMlB,OAAO,MAAM,YAAY,MAAyB;AAChD,iBAAe,IAAI,GAAG,IAAI;AAC1B,SAAO,WAAW,eAAe;AACjC,iBAAe,OAAO,QAAQ;AAC9B,SAAO;AACT;AAMA,OAAO,aAAa,SAAoB,QAA8B,UAAqC;AACzG,SAAO,eAAe,WAAW,QAAQ,QAAQ;AACnD;AASA,OAAO,cAAc,eAAe;AAKpC,OAAO,SAAS;AAChB,OAAO,SAAS,QAAQ;AACxB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,QAAQ;AACf,OAAO,QAAQ,OAAO;AACtB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,OAAO,QAAQ;AAER,IAAM,UAAU,OAAO;AACvB,IAAM,aAAa,OAAO;AAC1B,IAAM,MAAM,OAAO;AACnB,IAAM,aAAa,OAAO;AAC1B,IAAM,cAAc,OAAO;AAC3B,IAAM,QAAQ;AACd,IAAM,SAAS,QAAQ;AACvB,IAAM,QAAQ,OAAO;","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.umd.js.map b/lib/marked.umd.js.map index f6b634b2f2..3a5229b4a7 100644 --- a/lib/marked.umd.js.map +++ b/lib/marked.umd.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.js';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/src/Instance.ts b/src/Instance.ts index 8a5ea224ae..64e87eae33 100644 --- a/src/Instance.ts +++ b/src/Instance.ts @@ -1,4 +1,4 @@ -import { _getDefaults } from './defaults.js'; +import { _getDefaults } from './defaults.ts'; import { _Lexer } from './Lexer.ts'; import { _Parser } from './Parser.ts'; import { _Hooks } from './Hooks.ts'; From c361c6a0447c5f56a6b082e8d49c67a1a8066198 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Mon, 31 Jul 2023 23:19:02 -0600 Subject: [PATCH 4/6] remove hooks return types --- lib/marked.cjs.map | 2 +- lib/marked.d.ts | 4 ++-- lib/marked.esm.js.map | 2 +- lib/marked.umd.js.map | 2 +- src/Hooks.ts | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/marked.cjs.map b/lib/marked.cjs.map index fa65b28a44..1e174d4565 100644 --- a/lib/marked.cjs.map +++ b/lib/marked.cjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.d.ts b/lib/marked.d.ts index 800dbb5455..7031c70915 100644 --- a/lib/marked.d.ts +++ b/lib/marked.d.ts @@ -522,11 +522,11 @@ declare class _Hooks { /** * Process markdown before marked */ - preprocess(markdown: string): string | Promise; + preprocess(markdown: string): string; /** * Process HTML after marked is finished */ - postprocess(html: string): string | Promise; + postprocess(html: string): string; } type ResultCallback$1 = (error: Error | null, parseResult?: string) => undefined | void; diff --git a/lib/marked.esm.js.map b/lib/marked.esm.js.map index 8e8e15fa80..82a9241549 100644 --- a/lib/marked.esm.js.map +++ b/lib/marked.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/lib/marked.umd.js.map b/lib/marked.umd.js.map index 3a5229b4a7..c74b7bbb09 100644 --- a/lib/marked.umd.js.map +++ b/lib/marked.umd.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string): string | Promise {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string): string | Promise {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file +{"version":3,"sources":["../src/marked.ts","../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Slugger.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts"],"sourcesContent":["import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML synchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML\n */\nexport function marked(src: string, options?: MarkedOptions): string;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(src: string, callback: ResultCallback): void;\n\n/**\n * Compiles markdown to HTML asynchronously with a callback.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @param callback Function called when the markdownString has been fully parsed when using async highlighting\n */\nexport function marked(\n src: string,\n options: MarkedOptions,\n callback: ResultCallback,\n): void;\nexport function marked(src: string, opt?: MarkedOptions | ResultCallback, callback?: ResultCallback): string | Promise | undefined {\n return markedInstance.parse(src, opt, callback);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Slugger as Slugger } from './Slugger.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './rules.ts';\nexport type * from './Tokens.ts';\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nexport let _defaults = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n","import type { MarkedOptions } from './MarkedOptions.ts';\nimport type { ResultCallback } from './marked.ts';\nimport type { Rule } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements: {[index: string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\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 return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\nexport function edit(regex: Rule, opt?: string) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = (regex as string).replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nexport function cleanUrl(sanitize: boolean | undefined, base: string | undefined | null, href: string) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls: Record = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nexport function resolveUrl(base: string, href: string) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nexport const noopTest = { exec: () => null };\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nexport function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback) {\n if (!opt || opt.silent) {\n return;\n }\n\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n escape,\n findClosingBracket\n} from './helpers.ts';\nimport { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token: Tokens.Link = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw: string, text: string) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules: any;\n lexer!: _Lexer;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [] as Tokens.ListItem[]\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t: string) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n (list.items[list.items.length - 1] as Tokens.ListItem).text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens!.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw!));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | Tokens.Paragraph | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML | Tokens.Paragraph = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token as unknown as Tokens.Paragraph;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; 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 l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i] as unknown as string, item.header.length).map(c => {\n return { text: c };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + rLength + 1);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import {\n noopTest,\n edit\n} from './helpers.ts';\n\nexport type Rule = RegExp | string;\n\nexport interface Rules {\n [ruleName: string]: Pick | Rule | Rules;\n}\n\ntype BlockRuleNames =\n | 'newline'\n | 'code'\n | 'fences'\n | 'hr'\n | 'heading'\n | 'blockquote'\n | 'list'\n | 'html'\n | 'def'\n | 'lheading'\n | '_paragraph'\n | 'text'\n | '_label'\n | '_title'\n | 'bullet'\n | 'listItemStart'\n | '_tag'\n | '_comment'\n | 'paragraph'\n | 'uote' ;\n\ntype BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic';\n\ntype InlineRuleNames =\n | 'escape'\n | 'autolink'\n | 'tag'\n | 'link'\n | 'reflink'\n | 'nolink'\n | 'reflinkSearch'\n | 'code'\n | 'br'\n | 'text'\n | '_punctuation'\n | 'punctuation'\n | 'blockSkip'\n | 'escapedEmSt'\n | '_comment'\n | '_escapes'\n | '_scheme'\n | '_email'\n | '_attribute'\n | '_label'\n | '_href'\n | '_title'\n | 'strong'\n | '_extended_email'\n | '_backpedal';\n\ntype InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic'| 'breaks';\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const block: Record & Record & Rules = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table as RegExp) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph as Rule)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nexport const inline: Record & Record & Rules = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim as Rule, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.anyPunctuation = edit(inline.anyPunctuation as Rule, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: {src: string, tokens: Token[]}[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules(): Rules {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[]): Token[];\n blockTokens(src: string, tokens?: TokensList): TokensList;\n blockTokens(src: string, tokens: Token[] = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token: Tokens.Generic | undefined;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer: TokenizerExtension['tokenizer']) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape\n} from './helpers.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport { Slugger } from './marked.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n code(code: string, infostring: string | undefined, escaped: boolean): string {\n const lang = (infostring || '').match(/\\S*/)![0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote: string): string {\n return `
    \\n${quote}
    \\n`;\n }\n\n html(html: string, block?: boolean) : string {\n return html;\n }\n\n heading(text: string, level: number, raw: string, slugger: Slugger): string {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `${text}\\n`;\n }\n\n // ignore IDs\n return `${text}\\n`;\n }\n\n hr(): string {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body: string, ordered: boolean, start: number | ''): string {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text: string, task: boolean, checked: boolean): string {\n return `
  • ${text}
  • \\n`;\n }\n\n checkbox(checked: boolean): string {\n return ' ';\n }\n\n paragraph(text: string): string {\n return `

    ${text}

    \\n`;\n }\n\n table(header: string, body: string): string {\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content: string): string {\n return `\\n${content}\\n`;\n }\n\n tablecell(content: string, flags: {\n header: boolean;\n align: 'center' | 'left' | 'right' | null;\n }): string {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n\n /**\n * span level renderer\n */\n strong(text: string): string {\n return `${text}`;\n }\n\n em(text: string): string {\n return `${text}`;\n }\n\n codespan(text: string): string {\n return `${text}`;\n }\n\n br(): string {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text: string): string {\n return `${text}`;\n }\n\n link(href: string, title: string | null | undefined, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href: string, title: string | null, text: string): string {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) as any;\n if (href === null) {\n return text;\n }\n\n let out = `\"${text}\"`;\n' : '>';\n return out;\n }\n\n text(text: string) : string {\n return text;\n }\n}\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong(text: string) {\n return text;\n }\n\n em(text: string) {\n return text;\n }\n\n codespan(text: string) {\n return text;\n }\n\n del(text: string) {\n return text;\n }\n\n html(text: string) {\n return text;\n }\n\n text(text: string) {\n return text;\n }\n\n link(href: string, title: string | null | undefined, text: string) {\n return '' + text;\n }\n\n image(href: string, title: string | null, text: string) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n","import type { SluggerOptions } from './MarkedOptions.ts';\n\n/**\n * Slugger generates header id\n */\nexport class _Slugger {\n seen: { [slugValue: string]: number };\n\n constructor() {\n this.seen = {};\n }\n\n serialize(value: string) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n */\n slug(value: string, options: SluggerOptions = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport { _defaults } from './defaults.ts';\nimport {\n unescape\n} from './helpers.ts';\nimport type { Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n slugger: _Slugger;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): string {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens!),\n token.depth,\n unescape(this.parseInline(token.tokens!, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens)!,\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens)!,\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens!);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n } as Tokens.Text);\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens!)!);\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i] as Tokens.Text;\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body!) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens!, renderer)!);\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: string) {\n return html;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Slugger } from './Slugger.ts';\nimport {\n checkDeprecations,\n escape\n} from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;\n\ntype unknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {\n let values: T[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens!, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: NonNullable = this.defaults.extensions || { renderers: {}, childTokens: {} } as NonNullable;\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start!);\n } else {\n extensions.startBlock = [ext.start!];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start!);\n } else {\n extensions.startInline = [ext.start!];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop as keyof MarkedExtension['renderer']] as GenericRendererFunction;\n const rendererKey = prop as keyof _Renderer;\n const prevRenderer = renderer[rendererKey] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction;\n const tokenizerKey = prop as keyof _Tokenizer;\n const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction;\n const hooksKey = prop as keyof _Hooks;\n const prevHook = hooks[hooksKey] as unknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret) as string;\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret) as string;\n };\n } else {\n hooks[hooksKey] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret as string;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values: Array | void> = [];\n values.push(pack.walkTokens!.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n #parseMarkdown(lexer: (src: string, options?: MarkedOptions) => TokensList | Token[], parser: (tokens: Token[], options?: MarkedOptions) => string) {\n return (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined): string | Promise | undefined => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkDeprecations(opt, callback);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens: TokensList | Token[];\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e as Error);\n }\n\n const done = (err?: Error) => {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt)!;\n if (opt.hooks) {\n out = opt.hooks.postprocess(out) as string;\n }\n } catch (e) {\n err = e as Error;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback!(null, out) as undefined;\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html) as string;\n }\n return html;\n } catch (e) {\n return throwError(e as Error);\n }\n };\n }\n\n #onError(silent: boolean, async: boolean, callback?: ResultCallback) {\n return (e: Error): string | Promise | undefined => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n"],"mappings":"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","names":["lexer","options","text","mangle","smartypants","options","lexer","options","block","options","options","parser","options","args","ret","walkTokens","lexer","parser","src","options"]} \ No newline at end of file diff --git a/src/Hooks.ts b/src/Hooks.ts index 130e790272..1a7a1d385f 100644 --- a/src/Hooks.ts +++ b/src/Hooks.ts @@ -16,14 +16,14 @@ export class _Hooks { /** * Process markdown before marked */ - preprocess(markdown: string): string | Promise { + preprocess(markdown: string) { return markdown; } /** * Process HTML after marked is finished */ - postprocess(html: string): string | Promise { + postprocess(html: string) { return html; } } From d2954e4c6cdafe98f3f6ff6d4fe50e373e1134d5 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 1 Aug 2023 23:17:57 -0600 Subject: [PATCH 5/6] UnknownFunction --- src/Instance.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Instance.ts b/src/Instance.ts index 64e87eae33..23a2b6b4da 100644 --- a/src/Instance.ts +++ b/src/Instance.ts @@ -15,7 +15,7 @@ import type { Token, TokensList } from './Tokens.ts'; export type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void; -type unknownFunction = (...args: unknown[]) => unknown; +type UnknownFunction = (...args: unknown[]) => unknown; type GenericRendererFunction = (...args: unknown[]) => string | false; export class Marked { @@ -161,9 +161,9 @@ export class Marked { if (pack.tokenizer) { const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); for (const prop in pack.tokenizer) { - const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as unknownFunction; + const tokenizerFunc = pack.tokenizer[prop as keyof MarkedExtension['tokenizer']] as UnknownFunction; const tokenizerKey = prop as keyof _Tokenizer; - const prevTokenizer = tokenizer[tokenizerKey] as unknownFunction; + const prevTokenizer = tokenizer[tokenizerKey] as UnknownFunction; // Replace tokenizer with func to run extension, but fall back if false tokenizer[tokenizerKey] = (...args: unknown[]) => { let ret = tokenizerFunc.apply(tokenizer, args); @@ -180,9 +180,9 @@ export class Marked { if (pack.hooks) { const hooks = this.defaults.hooks || new _Hooks(); for (const prop in pack.hooks) { - const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as unknownFunction; + const hooksFunc = pack.hooks[prop as keyof MarkedExtension['hooks']] as UnknownFunction; const hooksKey = prop as keyof _Hooks; - const prevHook = hooks[hooksKey] as unknownFunction; + const prevHook = hooks[hooksKey] as UnknownFunction; if (_Hooks.passThroughHooks.has(prop)) { hooks[hooksKey as 'preprocess' | 'postprocess'] = (arg: string | undefined) => { if (this.defaults.async) { From 9a03322e9a45c5d9cd642090ced8c0bfa3d57858 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Wed, 9 Aug 2023 23:12:47 -0600 Subject: [PATCH 6/6] fix emitted types --- lib/marked.d.ts | 574 ++++++++-------------------------------- package-lock.json | 6 +- package.json | 2 +- tsconfig-type-test.json | 1 - tsconfig-types.json | 1 - 5 files changed, 115 insertions(+), 469 deletions(-) diff --git a/lib/marked.d.ts b/lib/marked.d.ts index 16090c1993..d90549519f 100644 --- a/lib/marked.d.ts +++ b/lib/marked.d.ts @@ -1,318 +1,8 @@ -<<<<<<< HEAD -type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del | Tokens.Generic) & { - loose?: boolean; - tokens?: Token[]; -}; -declare namespace Tokens { - interface Space { - type: 'space'; - raw: string; - } - interface Code { - type: 'code'; - raw: string; - codeBlockStyle?: 'indented' | undefined; - lang?: string | undefined; - text: string; - escaped?: boolean; - } - interface Heading { - type: 'heading'; - raw: string; - depth: number; - text: string; - tokens: Token[]; - } - interface Table { - type: 'table'; - raw: string; - align: Array<'center' | 'left' | 'right' | null>; - header: TableCell[]; - rows: TableCell[][]; - } - interface TableCell { - text: string; -======= declare module "Tokens" { - export type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del) & { + export type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del | Tokens.Generic) & { loose?: boolean; ->>>>>>> master tokens?: Token[]; }; -<<<<<<< HEAD - constructor(); - serialize(value: string): string; - /** - * Finds the next safe (unique) slug to use - */ - getNextSafeSlug(originalSlug: string, isDryRun: boolean | undefined): string; - /** - * Convert string to unique id - */ - slug(value: string, options?: SluggerOptions): string; -} - -/** - * Parsing & Compiling - */ -declare class _Parser { - options: MarkedOptions; - renderer: _Renderer; - textRenderer: _TextRenderer; - slugger: _Slugger; - constructor(options?: MarkedOptions); - /** - * Static Parse Method - */ - static parse(tokens: Token[], options?: MarkedOptions): string; - /** - * Static Parse Inline Method - */ - static parseInline(tokens: Token[], options?: MarkedOptions): string; - /** - * Parse Loop - */ - parse(tokens: Token[], top?: boolean): string; - /** - * Parse Inline Tokens - */ - parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; -} - -/** - * Tokenizer - */ -declare class _Tokenizer { - options: MarkedOptions; - rules: any; - lexer: _Lexer; - constructor(options?: MarkedOptions); - space(src: string): Tokens.Space | undefined; - code(src: string): Tokens.Code | undefined; - fences(src: string): Tokens.Code | undefined; - heading(src: string): Tokens.Heading | undefined; - hr(src: string): Tokens.Hr | undefined; - blockquote(src: string): Tokens.Blockquote | undefined; - list(src: string): Tokens.List | undefined; - html(src: string): Tokens.HTML | Tokens.Paragraph | undefined; - def(src: string): Tokens.Def | undefined; - table(src: string): Tokens.Table | undefined; - lheading(src: string): Tokens.Heading | undefined; - paragraph(src: string): Tokens.Paragraph | undefined; - text(src: string): Tokens.Text | undefined; - escape(src: string): Tokens.Escape | undefined; - tag(src: string): Tokens.Tag | undefined; - link(src: string): Tokens.Link | Tokens.Image | undefined; - reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; - emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; - codespan(src: string): Tokens.Codespan | undefined; - br(src: string): Tokens.Br | undefined; - del(src: string): Tokens.Del | undefined; - autolink(src: string, mangle: (cap: string) => string): Tokens.Link | undefined; - url(src: string, mangle: (cap: string) => string): Tokens.Link | undefined; - inlineText(src: string, smartypants: (cap: string) => string): Tokens.Text | undefined; -} - -interface SluggerOptions { - /** Generates the next unique slug without updating the internal accumulator. */ - dryrun?: boolean; -} -interface TokenizerThis { - lexer: _Lexer; -} -interface TokenizerExtension { - name: string; - level: 'block' | 'inline'; - start?: ((this: TokenizerThis, src: string) => number | void) | undefined; - tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; - childTokens?: string[] | undefined; -} -interface RendererThis { - parser: _Parser; -} -type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; -interface RendererExtension { - name: string; - renderer: RendererExtensionFunction; -} -type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); -type RendererApi = Omit<_Renderer, 'constructor' | 'options'>; -type RendererObject = { - [K in keyof RendererApi]?: (...args: Parameters) => ReturnType | false; -}; -type TokenizerApi = Omit<_Tokenizer, 'constructor' | 'options' | 'rules' | 'lexer'>; -type TokenizerObject = { - [K in keyof TokenizerApi]?: (...args: Parameters) => ReturnType | false; -}; -interface MarkedExtension { - /** - * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. - */ - async?: boolean; - /** - * A prefix URL for any relative link. - * @deprecated Deprecated in v5.0.0 use marked-base-url to prefix url for any relative link. - */ - baseUrl?: string | undefined | null; - /** - * Enable GFM line breaks. This option requires the gfm option to be true. - */ - breaks?: boolean | undefined; - /** - * Add tokenizers and renderers to marked - */ - extensions?: TokenizerAndRendererExtension[] | undefined | null; - /** - * Enable GitHub flavored markdown. - */ - gfm?: boolean | undefined; - /** - * Include an id attribute when emitting headings. - * @deprecated Deprecated in v5.0.0 use marked-gfm-heading-id to include an id attribute when emitting headings (h1, h2, h3, etc). - */ - headerIds?: boolean | undefined; - /** - * Set the prefix for header tag ids. - * @deprecated Deprecated in v5.0.0 use marked-gfm-heading-id to add a string to prefix the id attribute when emitting headings (h1, h2, h3, etc). - */ - headerPrefix?: string | undefined; - /** - * A function to highlight code blocks. The function can either be - * synchronous (returning a string) or asynchronous (callback invoked - * with an error if any occurred during highlighting and a string - * if highlighting was successful) - * @deprecated Deprecated in v5.0.0 use marked-highlight to add highlighting to code blocks. - */ - highlight?: ((code: string, lang: string | undefined, callback?: (error: Error, code?: string) => void) => string | void) | null; - /** - * Hooks are methods that hook into some part of marked. - * preprocess is called to process markdown before sending it to marked. - * postprocess is called to process html after marked has finished parsing. - */ - hooks?: { - preprocess: (markdown: string) => string | Promise; - postprocess: (html: string) => string | Promise; - options?: MarkedOptions; - } | null; - /** - * Set the prefix for code block classes. - * @deprecated Deprecated in v5.0.0 use marked-highlight to prefix the className in a block. Useful for syntax highlighting. - */ - langPrefix?: string | undefined; - /** - * Mangle autolinks (). - * @deprecated Deprecated in v5.0.0 use marked-mangle to mangle email addresses. - */ - mangle?: boolean | undefined; - /** - * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. - */ - pedantic?: boolean | undefined; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: RendererObject | undefined | null; - /** - * Sanitize the output. Ignore any HTML that has been input. If true, sanitize the HTML passed into markdownString with the sanitizer function. - * @deprecated Warning: This feature is deprecated and it should NOT be used as it cannot be considered secure. Instead use a sanitize library, like DOMPurify (recommended), sanitize-html or insane on the output HTML! - */ - sanitize?: boolean | undefined; - /** - * Optionally sanitize found HTML with a sanitizer function. - * @deprecated A function to sanitize the HTML passed into markdownString. - */ - sanitizer?: ((html: string) => string) | null; - /** - * Shows an HTML error message when rendering fails. - */ - silent?: boolean | undefined; - /** - * Use smarter list behavior than the original markdown. May eventually be default with the old behavior moved into pedantic. - */ - smartLists?: boolean | undefined; - /** - * Use "smart" typograhic punctuation for things like quotes and dashes. - * @deprecated Deprecated in v5.0.0 use marked-smartypants to use "smart" typographic punctuation for things like quotes and dashes. - */ - smartypants?: boolean | undefined; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: TokenizerObject | undefined | null; - /** - * The walkTokens function gets called with every token. - * Child tokens are called before moving on to sibling tokens. - * Each token is passed by reference so updates are persisted when passed to the parser. - * The return value of the function is ignored. - */ - walkTokens?: ((token: Token) => void | Promise) | undefined | null; - /** - * Generate closing slash for self-closing tags (
    instead of
    ) - * @deprecated Deprecated in v5.0.0 use marked-xhtml to emit self-closing HTML tags for void elements (
    , , etc.) with a "/" as required by XHTML. - */ - xhtml?: boolean | undefined; -} -interface MarkedOptions extends Omit { - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: Omit<_Renderer, 'constructor'> | undefined | null; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: Omit<_Tokenizer, 'constructor'> | undefined | null; - /** - * The walkTokens function gets called with every token. - * Child tokens are called before moving on to sibling tokens. - * Each token is passed by reference so updates are persisted when passed to the parser. - * The return value of the function is ignored. - */ - walkTokens?: ((token: Token) => void | Promise | Array>) | undefined | null; - /** - * Add tokenizers and renderers to marked - */ - extensions?: (TokenizerAndRendererExtension[] & { - renderers: Record; - childTokens: Record; - block: any[]; - inline: any[]; - startBlock: Array<(this: TokenizerThis, src: string) => number | void>; - startInline: Array<(this: TokenizerThis, src: string) => number | void>; - }) | undefined | null; -} - -type Rule = RegExp | string; -interface Rules { - [ruleName: string]: Pick | Rule | Rules; -} -type BlockRuleNames = 'newline' | 'code' | 'fences' | 'hr' | 'heading' | 'blockquote' | 'list' | 'html' | 'def' | 'lheading' | '_paragraph' | 'text' | '_label' | '_title' | 'bullet' | 'listItemStart' | '_tag' | '_comment' | 'paragraph' | 'uote'; -type BlockSubRuleNames = 'normal' | 'gfm' | 'pedantic'; -type InlineRuleNames = 'escape' | 'autolink' | 'tag' | 'link' | 'reflink' | 'nolink' | 'reflinkSearch' | 'code' | 'br' | 'text' | '_punctuation' | 'punctuation' | 'blockSkip' | 'escapedEmSt' | '_comment' | '_escapes' | '_scheme' | '_email' | '_attribute' | '_label' | '_href' | '_title' | 'strong' | '_extended_email' | '_backpedal'; -type InlineSubRuleNames = 'gfm' | 'emStrong' | 'normal' | 'pedantic' | 'breaks'; -/** - * Block-Level Grammar - */ -declare const block: Record & Record & Rules; -/** - * Inline-Level Grammar - */ -declare const inline: Record & Record & Rules; - -/** - * Block Lexer - */ -declare class _Lexer { - tokens: TokensList; - options: MarkedOptions; - state: { - inLink: boolean; - inRawBlock: boolean; - top: boolean; -======= export namespace Tokens { interface Space { type: 'space'; @@ -335,7 +25,7 @@ declare class _Lexer { } interface Table { type: 'table'; - raw?: string; + raw: string; align: Array<'center' | 'left' | 'right' | null>; header: TableCell[]; rows: TableCell[][]; @@ -463,11 +153,10 @@ declare class _Lexer { export type Links = Record>; export type TokensList = Token[] & { links: Links; ->>>>>>> master }; } declare module "Tokenizer" { - import { _Lexer } from "Lexer"; + import type { _Lexer } from "Lexer"; import type { Links, Tokens } from "Tokens"; import type { MarkedOptions } from "MarkedOptions"; /** @@ -516,40 +205,11 @@ declare module "rules" { /** * Block-Level Grammar */ -<<<<<<< HEAD - postprocess(html: string): string; -} - -type ResultCallback$1 = (error: Error | null, parseResult?: string) => undefined | void; -declare class Marked { - #private; - defaults: MarkedOptions; - options: (opt: MarkedOptions) => this; - parse: (src: string, optOrCallback?: MarkedOptions | ResultCallback$1 | undefined | null, callback?: ResultCallback$1 | undefined) => string | Promise | undefined; - parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback$1 | undefined | null, callback?: ResultCallback$1 | undefined) => string | Promise | undefined; - Parser: typeof _Parser; - parser: typeof _Parser.parse; - Renderer: typeof _Renderer; - TextRenderer: typeof _TextRenderer; - Lexer: typeof _Lexer; - lexer: typeof _Lexer.lex; - Tokenizer: typeof _Tokenizer; - Slugger: typeof _Slugger; - Hooks: typeof _Hooks; - constructor(...args: MarkedExtension[]); -======= export const block: Record & Record & Rules; ->>>>>>> master /** * Inline-Level Grammar */ -<<<<<<< HEAD - walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => T | T[]): T[]; - use(...args: MarkedExtension[]): this; - setOptions(opt: MarkedOptions): this; -======= export const inline: Record & Record & Rules; ->>>>>>> master } declare module "Lexer" { import type { Token, TokensList } from "Tokens"; @@ -649,7 +309,7 @@ declare module "Instance" { export class Marked { #private; defaults: MarkedOptions; - options: (opt: any) => this; + options: (opt: MarkedOptions) => this; parse: (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined) => string | Promise | undefined; parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback | undefined | null, callback?: ResultCallback | undefined) => string | Promise | undefined; Parser: typeof _Parser; @@ -667,7 +327,7 @@ declare module "Instance" { */ walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => T | T[]): T[]; use(...args: MarkedExtension[]): this; - setOptions(opt: any): this; + setOptions(opt: MarkedOptions): this; } } declare module "helpers" { @@ -685,7 +345,7 @@ declare module "helpers" { export const noopTest: { exec: () => null; }; - export function splitCells(tableRow: string, count: number): string[]; + export function splitCells(tableRow: string, count?: number): string[]; /** * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). * /c*$/ is vulnerable to REDOS. @@ -698,101 +358,9 @@ declare module "helpers" { export function findClosingBracket(str: string, b: string): number; export function checkDeprecations(opt: MarkedOptions, callback?: ResultCallback): void; } -declare module "marked" { - import { _Lexer } from "Lexer"; - import { _Parser } from "Parser"; - import { _Tokenizer } from "Tokenizer"; - import { _Renderer } from "Renderer"; - import { _TextRenderer } from "TextRenderer"; - import { _Slugger } from "Slugger"; - import { _Hooks } from "Hooks"; - import { _getDefaults } from "defaults"; - import type { MarkedExtension, MarkedOptions } from "MarkedOptions"; - import type { Token, TokensList } from "Tokens"; - import type { ResultCallback } from "Instance"; - /** - * Compiles markdown to HTML asynchronously. - * - * @param src String of markdown source to be compiled - * @param options Hash of options, having async: true - * @return Promise of string of compiled HTML - */ - export function marked(src: string, options: MarkedOptions & { - async: true; - }): Promise; - /** - * Compiles markdown to HTML synchronously. - * - * @param src String of markdown source to be compiled - * @param options Optional hash of options - * @return String of compiled HTML - */ - export function marked(src: string, options?: MarkedOptions): string; - /** - * Compiles markdown to HTML asynchronously with a callback. - * - * @param src String of markdown source to be compiled - * @param callback Function called when the markdownString has been fully parsed when using async highlighting - */ - export function marked(src: string, callback: ResultCallback): void; - /** - * Compiles markdown to HTML asynchronously with a callback. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @param callback Function called when the markdownString has been fully parsed when using async highlighting - */ - export function marked(src: string, options: MarkedOptions, callback: ResultCallback): void; - /** - * Compiles markdown to HTML asynchronously with a callback. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @param callback Function called when the markdownString has been fully parsed when using async highlighting - */ - export namespace marked { - var options: (options: MarkedOptions) => typeof marked; - var setOptions: (options: MarkedOptions) => typeof marked; - var getDefaults: typeof _getDefaults; - var defaults: MarkedOptions; - var use: (...args: MarkedExtension[]) => typeof marked; - var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) => T[]; - var parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback | null | undefined, callback?: ResultCallback | undefined) => string | Promise | undefined; - var Parser: typeof _Parser; - var parser: typeof _Parser.parse; - var Renderer: typeof _Renderer; - var TextRenderer: typeof _TextRenderer; - var Lexer: typeof _Lexer; - var lexer: typeof _Lexer.lex; - var Tokenizer: typeof _Tokenizer; - var Slugger: typeof _Slugger; - var Hooks: typeof _Hooks; - var parse: typeof marked; - } - export const options: (options: MarkedOptions) => typeof marked; - export const setOptions: (options: MarkedOptions) => typeof marked; - export const use: (...args: MarkedExtension[]) => typeof marked; - export const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) => T[]; - export const parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback | null | undefined, callback?: ResultCallback | undefined) => string | Promise | undefined; - export const parse: typeof marked; - export const parser: typeof _Parser.parse; - export const lexer: typeof _Lexer.lex; - export { _defaults as defaults, _getDefaults as getDefaults } from "defaults"; - export { _Lexer as Lexer } from "Lexer"; - export { _Parser as Parser } from "Parser"; - export { _Tokenizer as Tokenizer } from "Tokenizer"; - export { _Renderer as Renderer } from "Renderer"; - export { _TextRenderer as TextRenderer } from "TextRenderer"; - export { _Slugger as Slugger } from "Slugger"; - export { _Hooks as Hooks } from "Hooks"; - export { Marked } from "Instance"; - export type * from "MarkedOptions"; - export type * from "rules"; - export type * from "Tokens"; -} declare module "Renderer" { import type { MarkedOptions } from "MarkedOptions"; - import { Slugger } from "marked"; + import type { _Slugger } from "Slugger"; /** * Renderer */ @@ -802,7 +370,7 @@ declare module "Renderer" { code(code: string, infostring: string | undefined, escaped: boolean): string; blockquote(quote: string): string; html(html: string, block?: boolean): string; - heading(text: string, level: number, raw: string, slugger: Slugger): string; + heading(text: string, level: number, raw: string, slugger: _Slugger): string; hr(): string; list(body: string, ordered: boolean, start: number | ''): string; listitem(text: string, task: boolean, checked: boolean): string; @@ -862,10 +430,10 @@ declare module "Parser" { } declare module "MarkedOptions" { import type { Token, Tokens, TokensList } from "Tokens"; - import { _Parser } from "Parser"; - import { _Lexer } from "Lexer"; - import { _Renderer } from "Renderer"; - import { _Tokenizer } from "Tokenizer"; + import type { _Parser } from "Parser"; + import type { _Lexer } from "Lexer"; + import type { _Renderer } from "Renderer"; + import type { _Tokenizer } from "Tokenizer"; export interface SluggerOptions { /** Generates the next unique slug without updating the internal accumulator. */ dryrun?: boolean; @@ -877,15 +445,16 @@ declare module "MarkedOptions" { name: string; level: 'block' | 'inline'; start?: ((this: TokenizerThis, src: string) => number | void) | undefined; - tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | void; + tokenizer: (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; childTokens?: string[] | undefined; } export interface RendererThis { parser: _Parser; } + export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; export interface RendererExtension { name: string; - renderer: (this: RendererThis, token: Tokens.Generic) => string | false | undefined; + renderer: RendererExtensionFunction; } export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); type RendererApi = Omit<_Renderer, 'constructor' | 'options'>; @@ -942,8 +511,8 @@ declare module "MarkedOptions" { * postprocess is called to process html after marked has finished parsing. */ hooks?: { - preprocess: (markdown: string) => string; - postprocess: (html: string | undefined) => string | undefined; + preprocess: (markdown: string) => string | Promise; + postprocess: (html: string) => string | Promise; options?: MarkedOptions; } | null; /** @@ -1028,7 +597,7 @@ declare module "MarkedOptions" { * Add tokenizers and renderers to marked */ extensions?: (TokenizerAndRendererExtension[] & { - renderers: Record string | false | undefined>; + renderers: Record; childTokens: Record; block: any[]; inline: any[]; @@ -1059,19 +628,98 @@ declare module "Hooks" { /** * Process HTML after marked is finished */ - postprocess(html: string | undefined): string | undefined; + postprocess(html: string): string; } } -<<<<<<< HEAD -declare const options: (options: MarkedOptions) => typeof marked; -declare const setOptions: (options: MarkedOptions) => typeof marked; -declare const use: (...args: MarkedExtension[]) => typeof marked; -declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) => T[]; -declare const parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback$1 | null | undefined, callback?: ResultCallback$1 | undefined) => string | Promise | undefined; -declare const parse: typeof marked; -declare const parser: typeof _Parser.parse; -declare const lexer: typeof _Lexer.lex; - -export { _Hooks as Hooks, _Lexer as Lexer, Links, Marked, MarkedExtension, MarkedOptions, _Parser as Parser, _Renderer as Renderer, RendererExtension, RendererExtensionFunction, RendererThis, ResultCallback, Rule, Rules, _Slugger as Slugger, SluggerOptions, _TextRenderer as TextRenderer, Token, _Tokenizer as Tokenizer, TokenizerAndRendererExtension, TokenizerExtension, TokenizerThis, Tokens, TokensList, block, _defaults as defaults, _getDefaults as getDefaults, inline, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; -======= ->>>>>>> master +declare module "marked" { + import { _Lexer } from "Lexer"; + import { _Parser } from "Parser"; + import { _Tokenizer } from "Tokenizer"; + import { _Renderer } from "Renderer"; + import { _TextRenderer } from "TextRenderer"; + import { _Slugger } from "Slugger"; + import { _Hooks } from "Hooks"; + import { _getDefaults } from "defaults"; + import type { MarkedExtension, MarkedOptions } from "MarkedOptions"; + import type { Token, TokensList } from "Tokens"; + import type { ResultCallback } from "Instance"; + /** + * Compiles markdown to HTML asynchronously. + * + * @param src String of markdown source to be compiled + * @param options Hash of options, having async: true + * @return Promise of string of compiled HTML + */ + export function marked(src: string, options: MarkedOptions & { + async: true; + }): Promise; + /** + * Compiles markdown to HTML synchronously. + * + * @param src String of markdown source to be compiled + * @param options Optional hash of options + * @return String of compiled HTML + */ + export function marked(src: string, options?: MarkedOptions): string; + /** + * Compiles markdown to HTML asynchronously with a callback. + * + * @param src String of markdown source to be compiled + * @param callback Function called when the markdownString has been fully parsed when using async highlighting + */ + export function marked(src: string, callback: ResultCallback): void; + /** + * Compiles markdown to HTML asynchronously with a callback. + * + * @param src String of markdown source to be compiled + * @param options Hash of options + * @param callback Function called when the markdownString has been fully parsed when using async highlighting + */ + export function marked(src: string, options: MarkedOptions, callback: ResultCallback): void; + /** + * Compiles markdown to HTML asynchronously with a callback. + * + * @param src String of markdown source to be compiled + * @param options Hash of options + * @param callback Function called when the markdownString has been fully parsed when using async highlighting + */ + export namespace marked { + var options: (options: MarkedOptions) => typeof marked; + var setOptions: (options: MarkedOptions) => typeof marked; + var getDefaults: typeof _getDefaults; + var defaults: MarkedOptions; + var use: (...args: MarkedExtension[]) => typeof marked; + var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) => T[]; + var parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback | null | undefined, callback?: ResultCallback | undefined) => string | Promise | undefined; + var Parser: typeof _Parser; + var parser: typeof _Parser.parse; + var Renderer: typeof _Renderer; + var TextRenderer: typeof _TextRenderer; + var Lexer: typeof _Lexer; + var lexer: typeof _Lexer.lex; + var Tokenizer: typeof _Tokenizer; + var Slugger: typeof _Slugger; + var Hooks: typeof _Hooks; + var parse: typeof marked; + } + export const options: (options: MarkedOptions) => typeof marked; + export const setOptions: (options: MarkedOptions) => typeof marked; + export const use: (...args: MarkedExtension[]) => typeof marked; + export const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) => T[]; + export const parseInline: (src: string, optOrCallback?: MarkedOptions | ResultCallback | null | undefined, callback?: ResultCallback | undefined) => string | Promise | undefined; + export const parse: typeof marked; + export const parser: typeof _Parser.parse; + export const lexer: typeof _Lexer.lex; + export { _defaults as defaults, _getDefaults as getDefaults } from "defaults"; + export { _Lexer as Lexer } from "Lexer"; + export { _Parser as Parser } from "Parser"; + export { _Tokenizer as Tokenizer } from "Tokenizer"; + export { _Renderer as Renderer } from "Renderer"; + export { _TextRenderer as TextRenderer } from "TextRenderer"; + export { _Slugger as Slugger } from "Slugger"; + export { _Hooks as Hooks } from "Hooks"; + export { Marked } from "Instance"; + export type * from "MarkedOptions"; + export type * from "rules"; + export type * from "Tokens"; +} diff --git a/package-lock.json b/package-lock.json index 45d3524329..76b698c7c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10490,9 +10490,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", "dev": true, "optional": true, "peer": true diff --git a/package.json b/package.json index eb67c68de9..65678bf368 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "bench": "npm run build && node test/bench.js", "lint": "eslint --fix .", "build:reset": "git checkout upstream/master lib/marked.cjs lib/marked.umd.js lib/marked.esm.js marked.min.js", - "build": "npm run rollup && npm run minify", + "build": "npm run rollup && npm run minify && npm run build:types", "build:docs": "node build-docs.js", "build:types": "tsc --project tsconfig-types.json", "rollup": "rollup -c rollup.config.js", diff --git a/tsconfig-type-test.json b/tsconfig-type-test.json index 39c7639a04..88c521fe59 100644 --- a/tsconfig-type-test.json +++ b/tsconfig-type-test.json @@ -8,7 +8,6 @@ "noEmit": true, "allowSyntheticDefaultImports": true, "moduleResolution": "NodeNext", - "noImplicitAny": false, "baseUrl": ".", "paths": { "marked": [ diff --git a/tsconfig-types.json b/tsconfig-types.json index 604c1295b5..87fdb925c3 100644 --- a/tsconfig-types.json +++ b/tsconfig-types.json @@ -7,7 +7,6 @@ "emitDeclarationOnly": true, "allowSyntheticDefaultImports": true, "moduleResolution": "NodeNext", - "noImplicitAny": false, "allowImportingTsExtensions": true, "outFile": "lib/marked.d.ts" },