{"version":3,"file":"static/chunks/798-90cc22f9fa260f33.js","mappings":"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","sources":["webpack://_N_E/./node_modules/extend/index.js","webpack://_N_E/./node_modules/inline-style-parser/index.js","webpack://_N_E/./node_modules/style-to-object/cjs/index.js","webpack://_N_E/./node_modules/devlop/lib/default.js","webpack://_N_E/./node_modules/comma-separated-tokens/index.js","webpack://_N_E/./node_modules/estree-util-is-identifier-name/lib/index.js","webpack://_N_E/./node_modules/hast-util-whitespace/lib/index.js","webpack://_N_E/./node_modules/property-information/lib/util/schema.js","webpack://_N_E/./node_modules/property-information/lib/util/merge.js","webpack://_N_E/./node_modules/property-information/lib/normalize.js","webpack://_N_E/./node_modules/property-information/lib/util/info.js","webpack://_N_E/./node_modules/property-information/lib/util/types.js","webpack://_N_E/./node_modules/property-information/lib/util/defined-info.js","webpack://_N_E/./node_modules/property-information/lib/util/create.js","webpack://_N_E/./node_modules/property-information/lib/xlink.js","webpack://_N_E/./node_modules/property-information/lib/xml.js","webpack://_N_E/./node_modules/property-information/lib/util/case-sensitive-transform.js","webpack://_N_E/./node_modules/property-information/lib/util/case-insensitive-transform.js","webpack://_N_E/./node_modules/property-information/lib/xmlns.js","webpack://_N_E/./node_modules/property-information/lib/aria.js","webpack://_N_E/./node_modules/property-information/lib/html.js","webpack://_N_E/./node_modules/property-information/lib/svg.js","webpack://_N_E/./node_modules/property-information/index.js","webpack://_N_E/./node_modules/property-information/lib/find.js","webpack://_N_E/./node_modules/property-information/lib/hast-to-react.js","webpack://_N_E/./node_modules/space-separated-tokens/index.js","webpack://_N_E/./node_modules/style-to-object/esm/index.mjs","webpack://_N_E/./node_modules/unist-util-position/lib/index.js","webpack://_N_E/./node_modules/unist-util-stringify-position/lib/index.js","webpack://_N_E/./node_modules/vfile-message/lib/index.js","webpack://_N_E/./node_modules/hast-util-to-jsx-runtime/lib/index.js","webpack://_N_E/./node_modules/html-url-attributes/lib/index.js","webpack://_N_E/./node_modules/mdast-util-to-string/lib/index.js","webpack://_N_E/./node_modules/micromark-util-chunked/index.js","webpack://_N_E/./node_modules/micromark-util-subtokenize/index.js","webpack://_N_E/./node_modules/micromark/lib/postprocess.js","webpack://_N_E/./node_modules/micromark-util-combine-extensions/index.js","webpack://_N_E/./node_modules/micromark-util-character/index.js","webpack://_N_E/./node_modules/micromark-factory-space/index.js","webpack://_N_E/./node_modules/micromark/lib/initialize/content.js","webpack://_N_E/./node_modules/micromark/lib/initialize/document.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/blank-line.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/content.js","webpack://_N_E/./node_modules/micromark/lib/initialize/flow.js","webpack://_N_E/./node_modules/micromark/lib/initialize/text.js","webpack://_N_E/./node_modules/micromark-util-resolve-all/index.js","webpack://_N_E/./node_modules/micromark/lib/create-tokenizer.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/thematic-break.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/list.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/block-quote.js","webpack://_N_E/./node_modules/micromark-factory-destination/index.js","webpack://_N_E/./node_modules/micromark-factory-label/index.js","webpack://_N_E/./node_modules/micromark-factory-title/index.js","webpack://_N_E/./node_modules/micromark-factory-whitespace/index.js","webpack://_N_E/./node_modules/micromark-util-normalize-identifier/index.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/definition.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/code-indented.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/heading-atx.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/setext-underline.js","webpack://_N_E/./node_modules/micromark-util-html-tag-name/index.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/html-flow.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/code-fenced.js","webpack://_N_E/./node_modules/decode-named-character-reference/index.dom.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/character-reference.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/character-escape.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/line-ending.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/label-end.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/label-start-image.js","webpack://_N_E/./node_modules/micromark-util-classify-character/index.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/attention.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/autolink.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/html-text.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/label-start-link.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/hard-break-escape.js","webpack://_N_E/./node_modules/micromark-core-commonmark/lib/code-text.js","webpack://_N_E/./node_modules/micromark/lib/constructs.js","webpack://_N_E/./node_modules/micromark/lib/parse.js","webpack://_N_E/./node_modules/micromark/lib/preprocess.js","webpack://_N_E/./node_modules/micromark-util-decode-numeric-character-reference/index.js","webpack://_N_E/./node_modules/micromark-util-decode-string/index.js","webpack://_N_E/./node_modules/mdast-util-from-markdown/lib/index.js","webpack://_N_E/./node_modules/remark-parse/lib/index.js","webpack://_N_E/./node_modules/@ungap/structured-clone/esm/types.js","webpack://_N_E/./node_modules/@ungap/structured-clone/esm/deserialize.js","webpack://_N_E/./node_modules/@ungap/structured-clone/esm/serialize.js","webpack://_N_E/./node_modules/@ungap/structured-clone/esm/index.js","webpack://_N_E/./node_modules/micromark-util-sanitize-uri/index.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/footer.js","webpack://_N_E/./node_modules/unist-util-is/lib/index.js","webpack://_N_E/./node_modules/unist-util-visit-parents/lib/color.js","webpack://_N_E/./node_modules/unist-util-visit-parents/lib/index.js","webpack://_N_E/./node_modules/unist-util-visit/lib/index.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/revert.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/table-row.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","webpack://_N_E/./node_modules/trim-lines/index.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/state.js","webpack://_N_E/./node_modules/mdast-util-to-hast/lib/index.js","webpack://_N_E/./node_modules/remark-rehype/lib/index.js","webpack://_N_E/./node_modules/bail/index.js","webpack://_N_E/./node_modules/is-plain-obj/index.js","webpack://_N_E/./node_modules/trough/index.js","webpack://_N_E/./node_modules/vfile/lib/minpath.browser.js","webpack://_N_E/./node_modules/vfile/lib/minproc.browser.js","webpack://_N_E/./node_modules/vfile/lib/minurl.shared.js","webpack://_N_E/./node_modules/vfile/lib/minurl.browser.js","webpack://_N_E/./node_modules/vfile/lib/index.js","webpack://_N_E/./node_modules/unified/lib/callable-instance.js","webpack://_N_E/./node_modules/unified/lib/index.js","webpack://_N_E/./node_modules/react-markdown/lib/index.js","webpack://_N_E/"],"sourcesContent":["'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n var styleObject = null;\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n var declarations = (0, inline_style_parser_1.default)(style);\n var hasIterator = typeof iterator === 'function';\n declarations.forEach(function (declaration) {\n if (declaration.type !== 'declaration') {\n return;\n }\n var property = declaration.property, value = declaration.value;\n if (hasIterator) {\n iterator(property, value, declaration);\n }\n else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n return styleObject;\n}\nexports.default = StyleToObject;\n//# sourceMappingURL=index.js.map","export function deprecate(fn) {\n return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse, postprocess, preprocess} from 'micromark'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\n atMarker = undefined\n }\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return d\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract} node\n *   Reference node (image, link).\n * @returns {Array}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: .\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","(self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || []).push([[798],{\n\n/***/ 94470:\n/***/ (function(module) {\n\n\"use strict\";\n\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n\n/***/ 18139:\n/***/ (function(module) {\n\n// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n\n\n/***/ }),\n\n/***/ 5174:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar inline_style_parser_1 = __importDefault(__webpack_require__(18139));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n var styleObject = null;\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n var declarations = (0, inline_style_parser_1.default)(style);\n var hasIterator = typeof iterator === 'function';\n declarations.forEach(function (declaration) {\n if (declaration.type !== 'declaration') {\n return;\n }\n var property = declaration.property, value = declaration.value;\n if (hasIterator) {\n iterator(property, value, declaration);\n }\n else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n return styleObject;\n}\nexports[\"default\"] = StyleToObject;\n//# sourceMappingURL=index.js.map\n\n/***/ }),\n\n/***/ 21798:\n/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"U\": function() { return /* binding */ Markdown; }\n});\n\n// UNUSED EXPORTS: defaultUrlTransform\n\n// NAMESPACE OBJECT: ./node_modules/property-information/lib/util/types.js\nvar types_namespaceObject = {};\n__webpack_require__.r(types_namespaceObject);\n__webpack_require__.d(types_namespaceObject, {\n \"boolean\": function() { return types_boolean; },\n \"booleanish\": function() { return booleanish; },\n \"commaOrSpaceSeparated\": function() { return commaOrSpaceSeparated; },\n \"commaSeparated\": function() { return commaSeparated; },\n \"number\": function() { return number; },\n \"overloadedBoolean\": function() { return overloadedBoolean; },\n \"spaceSeparated\": function() { return spaceSeparated; }\n});\n\n// NAMESPACE OBJECT: ./node_modules/micromark/lib/constructs.js\nvar constructs_namespaceObject = {};\n__webpack_require__.r(constructs_namespaceObject);\n__webpack_require__.d(constructs_namespaceObject, {\n \"attentionMarkers\": function() { return attentionMarkers; },\n \"contentInitial\": function() { return contentInitial; },\n \"disable\": function() { return disable; },\n \"document\": function() { return constructs_document; },\n \"flow\": function() { return constructs_flow; },\n \"flowInitial\": function() { return flowInitial; },\n \"insideSpan\": function() { return insideSpan; },\n \"string\": function() { return constructs_string; },\n \"text\": function() { return constructs_text; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/devlop/lib/default.js\nfunction deprecate(fn) {\n return fn\n}\n\nfunction equal() {}\n\nfunction ok() {}\n\nfunction unreachable() {}\n\n;// CONCATENATED MODULE: ./node_modules/comma-separated-tokens/index.js\n/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nfunction parse(value) {\n /** @type {Array} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nfunction stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n\n;// CONCATENATED MODULE: ./node_modules/estree-util-is-identifier-name/lib/index.js\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nfunction start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nfunction cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nfunction lib_name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n\n;// CONCATENATED MODULE: ./node_modules/hast-util-whitespace/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nfunction whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/schema.js\n/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nclass Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/merge.js\n/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\n\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nfunction merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/normalize.js\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction normalize(value) {\n return value.toLowerCase()\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/info.js\nclass Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/types.js\nlet powers = 0\n\nconst types_boolean = increment()\nconst booleanish = increment()\nconst overloadedBoolean = increment()\nconst number = increment()\nconst spaceSeparated = increment()\nconst commaSeparated = increment()\nconst commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/defined-info.js\n\n\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types_namespaceObject)\n\nclass DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types_namespaceObject[check]) === types_namespaceObject[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/create.js\n/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nfunction create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/xlink.js\n\n\nconst xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/xml.js\n\n\nconst xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/case-sensitive-transform.js\n/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nfunction caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/util/case-insensitive-transform.js\n\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nfunction caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/xmlns.js\n\n\n\nconst xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/aria.js\n\n\n\nconst aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n\n;// CONCATENATED MODULE: ./node_modules/property-information/lib/html.js\n\n\n\n\nconst html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: types_boolean,\n allowPaymentRequest: types_boolean,\n allowUserMedia: types_boolean,\n alt: null,\n as: null,\n async: types_boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: types_boolean,\n autoPlay: types_boolean,\n blocking: spaceSeparated,\n capture: types_boolean,\n charSet: null,\n checked: types_boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: types_boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: types_boolean,\n defer: types_boolean,\n dir: null,\n dirName: null,\n disabled: types_boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: types_boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: types_boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: types_boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: types_boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: types_boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: types_boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: types_boolean,\n muted: types_boolean,\n name: null,\n nonce: null,\n noModule: types_boolean,\n noValidate: types_boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: types_boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: types_boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: types_boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: types_boolean,\n reversed: types_boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: types_boolean,\n seamless: types_boolean,\n selected: types_boolean,\n shadowRootDelegatesFocus: types_boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: types_boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `
` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: types_boolean, // Lists. Use CSS to reduce space between items instead\n declare: types_boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-fenced.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nconst codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/decode-named-character-reference/index.dom.js\n/// \n\n/* eslint-env browser */\n\nconst index_dom_element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nfunction decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n index_dom_element.innerHTML = characterReference\n const char = index_dom_element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/character-reference.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/character-escape.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/line-ending.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-end.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-start-image.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-util-classify-character/index.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nfunction classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/attention.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n/** @type {Construct} */\nconst attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/autolink.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/html-text.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-start-link.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/hard-break-escape.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-text.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark/lib/constructs.js\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n\n\n\n/** @satisfies {Extension['document']} */\nconst constructs_document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nconst contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nconst flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nconst constructs_flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nconst constructs_string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nconst constructs_text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nconst insideSpan = {\n null: [attention, resolver]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nconst attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nconst disable = {\n null: []\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark/lib/parse.js\n/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\n\n\n\n\n\n\n\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nfunction parse_parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([constructs_namespaceObject, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document_document),\n flow: create(flow),\n string: create(string),\n text: create(text_text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark/lib/preprocess.js\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nfunction preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/micromark-util-decode-numeric-character-reference/index.js\n/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nfunction decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}\n;// CONCATENATED MODULE: ./node_modules/micromark-util-decode-string/index.js\n\n\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nfunction decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-from-markdown/lib/index.js\n/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n\n\n\n\n\n\n\nconst mdast_util_from_markdown_lib_own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse_parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (mdast_util_from_markdown_lib_own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: mdast_util_from_markdown_lib_point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: mdast_util_from_markdown_lib_point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\n atMarker = undefined\n }\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: mdast_util_from_markdown_lib_point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = mdast_util_from_markdown_lib_point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return lib_toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: mdast_util_from_markdown_lib_point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = mdast_util_from_markdown_lib_point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = mdast_util_from_markdown_lib_point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = mdast_util_from_markdown_lib_point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction mdast_util_from_markdown_lib_point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (mdast_util_from_markdown_lib_own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/remark-parse/lib/index.js\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\n\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nfunction remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/@ungap/structured-clone/esm/types.js\nconst VOID = -1;\nconst PRIMITIVE = 0;\nconst ARRAY = 1;\nconst OBJECT = 2;\nconst DATE = 3;\nconst REGEXP = 4;\nconst MAP = 5;\nconst SET = 6;\nconst ERROR = 7;\nconst BIGINT = 8;\n// export const SYMBOL = 9;\n\n;// CONCATENATED MODULE: ./node_modules/@ungap/structured-clone/esm/deserialize.js\n\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nconst deserialize = serialized => deserializer(new Map, serialized)(0);\n\n;// CONCATENATED MODULE: ./node_modules/@ungap/structured-clone/esm/serialize.js\n\n\nconst EMPTY = '';\n\nconst {toString: serialize_toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = serialize_toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n\n;// CONCATENATED MODULE: ./node_modules/@ungap/structured-clone/esm/index.js\n\n\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\n/* harmony default export */ var structured_clone_esm = (typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options)));\n /* c8 ignore stop */\n\n\n\n;// CONCATENATED MODULE: ./node_modules/micromark-util-sanitize-uri/index.js\n\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nfunction sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nfunction normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/footer.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\n\n\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nfunction defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nfunction defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nfunction footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structured_clone_esm(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/unist-util-is/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nconst is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nconst convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return lib_ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction lib_ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n\n;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/color.js\n/**\n * @param {string} d\n * @returns {string}\n */\nfunction color(d) {\n return d\n}\n\n;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/index.js\n/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\n\n\n\n/** @type {Readonly} */\nconst lib_empty = []\n\n/**\n * Continue traversing as normal.\n */\nconst CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nconst EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nconst SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nfunction visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = lib_empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? lib_empty : [value]\n}\n\n;// CONCATENATED MODULE: ./node_modules/unist-util-visit/lib/index.js\n/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\n\n\n\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nfunction visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nfunction blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/break.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nfunction hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/code.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nfunction code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/delete.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/heading.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/html.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nfunction html_html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/revert.js\n/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract} node\n *   Reference node (image, link).\n * @returns {Array}\n *   hast content.\n */\nfunction revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nfunction imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/image.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction image_image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nfunction linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/link.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction link_link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/list-item.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nfunction listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: .\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/list.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction list_list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/root.js\n/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nfunction root_root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/strong.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/table.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/table-row.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nfunction tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/trim-lines/index.js\nconst tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nfunction trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/text.js\n/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nfunction handlers_text_text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction thematic_break_thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/handlers/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nconst handlers_handlers = {\n  blockquote: blockquote,\n  break: hardBreak,\n  code: code,\n  delete: strikethrough,\n  emphasis: emphasis,\n  footnoteReference: footnoteReference,\n  heading: heading,\n  html: html_html,\n  imageReference: imageReference,\n  image: image_image,\n  inlineCode: inlineCode,\n  linkReference: linkReference,\n  link: link_link,\n  listItem: listItem,\n  list: list_list,\n  paragraph: paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root: root_root,\n  strong: strong,\n  table: table,\n  tableCell: tableCell,\n  tableRow: tableRow,\n  text: handlers_text_text,\n  thematicBreak: thematic_break_thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/state.js\n/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\n\n\n\n\n\nconst state_own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst state_emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nfunction createState(tree, options) {\n const settings = options || state_emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...handlers_handlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (state_own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structured_clone_esm(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structured_clone_esm(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structured_clone_esm(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(state_own.call(data, 'hProperties') || state_own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nfunction wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n\n;// CONCATENATED MODULE: ./node_modules/mdast-util-to-hast/lib/index.js\n/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\n\n\n\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nfunction toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n ok('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n\n;// CONCATENATED MODULE: ./node_modules/remark-rehype/lib/index.js\n// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\n\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nfunction remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/bail/index.js\n/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nfunction bail(error) {\n if (error) {\n throw error\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/extend/index.js\nvar extend = __webpack_require__(94470);\n;// CONCATENATED MODULE: ./node_modules/is-plain-obj/index.js\nfunction isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n\n;// CONCATENATED MODULE: ./node_modules/trough/index.js\n/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nfunction trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n trough_wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nfunction trough_wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n\n;// CONCATENATED MODULE: ./node_modules/vfile/lib/minpath.browser.js\n// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : minpath_browser_normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction minpath_browser_normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n\n;// CONCATENATED MODULE: ./node_modules/vfile/lib/minproc.browser.js\n// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nconst proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n\n;// CONCATENATED MODULE: ./node_modules/vfile/lib/minurl.shared.js\n/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nfunction isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n\n;// CONCATENATED MODULE: ./node_modules/vfile/lib/minurl.browser.js\n\n\n\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nfunction urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n\n;// CONCATENATED MODULE: ./node_modules/vfile/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\n\n\n\n\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nclass VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n lib_assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n lib_assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction lib_assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n\n;// CONCATENATED MODULE: ./node_modules/unified/lib/callable-instance.js\nconst CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n\n;// CONCATENATED MODULE: ./node_modules/unified/lib/index.js\n/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\n\n\n\n\n\n\n\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst unified_lib_own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nclass Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (unified_lib_own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n ok(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n ok(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n ok(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n ok(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n ok(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObject(currentPrimary) && isPlainObject(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nconst unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObject(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || lib_isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction lib_isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n\n;// CONCATENATED MODULE: ./node_modules/react-markdown/lib/index.js\n// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\n\n\n\n// @ts-expect-error: untyped.\n\n\n\n\n\n\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nfunction Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment: jsx_runtime.Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx: jsx_runtime.jsx,\n jsxs: jsx_runtime.jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nfunction defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n\n\n/***/ })\n\n}]);"],"names":["self","push","module","hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","trim","str","replace","style","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","end","source","content","errorsList","error","msg","err","reason","filename","silent","re","m","exec","slice","comments","rules","c","comment","pos","FORWARD_SLASH","charAt","ASTERISK","EMPTY_STRING","type","declarations","decl","decls","declaration","prop","val","ret","property","__unused_webpack_module","__webpack_require__","__importDefault","mod","__esModule","inline_style_parser_1","iterator","styleObject","default","hasIterator","forEach","__unused_webpack___webpack_module__","__webpack_exports__","d","Markdown","types_namespaceObject","r","types_boolean","booleanish","commaOrSpaceSeparated","commaSeparated","number","overloadedBoolean","spaceSeparated","constructs_namespaceObject","attentionMarkers","contentInitial","disable","constructs_document","constructs_flow","flowInitial","insideSpan","constructs_string","constructs_text","nameRe","nameReJsx","emptyOptions","lib_name","settings","jsx","test","empty","Schema","normal","space","merge","definitions","index","assign","normalize","toLowerCase","Info","attribute","boolean","mustUseProperty","defined","powers","increment","checks","keys","DefinedInfo","mask","values","check","own","create","definition","properties","info","transform","attributes","includes","xlink","_","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","blocking","capture","charSet","checked","cite","className","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","data","dateTime","decoding","defer","dir","dirName","disabled","download","draggable","encType","enterKeyHint","fetchPriority","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","height","hidden","high","href","hrefLang","htmlFor","httpEquiv","id","imageSizes","imageSrcSet","inert","inputMode","integrity","is","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","language","list","loading","loop","low","manifest","max","maxLength","media","method","min","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","open","optimum","pattern","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","selected","shadowRootDelegatesFocus","shadowRootMode","shape","size","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","title","translate","typeMustMatch","useMap","width","wrap","align","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","char","charOff","classId","clear","code","codeBase","codeType","color","compact","declare","event","face","frame","frameBorder","hSpace","leftMargin","link","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","object","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","text","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","prefix","results","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","display","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filter","filterRes","filterUnits","focusable","focusHighlight","format","fr","from","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","handler","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","mode","numOctaves","observer","offset","opacity","operator","order","orient","orientation","origin","overflow","overlay","path","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","result","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","string","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x","x1","x2","xChannelSelector","y","y1","y2","yChannelSelector","z","zoomAndPan","property_information_html","property_information_svg","valid","dash","cap","kebab","$0","camelcase","toUpperCase","hastToReact","cjs","esm","pointEnd","point","pointStart","undefined","stringifyPosition","lib_position","lib_point","VFileMessage","Error","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","message","ruleId","indexOf","parent","fatal","file","stack","actual","expected","note","url","lib_own","emptyMap","Map","lib_cap","dashSomething","tableElements","Set","tableCellElement","docs","one","state","lib_element","parentSchema","schema","tagName","findComponentFromName","props","createElementProps","alignValue","createProperty","find","Type","rest","dashes","Number","isNaN","stringify","input","join","padRight","padLeft","parseStyle","toCamel","ignoreInvalidStyle","filePath","String","stylePropertyNameCase","transformStylesToCssCasing","domCasing","cssCasing","transformStyleToCssCasing","toDash","elementAttributeNameCase","tableCellAlignToStyle","has","children","createChildren","child","thing","addNode","addChildren","pop","mdxExpression","estree","evaluater","program","expression","body","evaluateExpression","mdxJsxElement","Fragment","createJsxElementProps","objectExpression","argument","crashEstree","mdxEsm","evaluateProgram","root","passNode","countsByName","passKeys","count","get","set","allowExpression","identifiers","split","computed","Boolean","optional","components","$1","urlAttributes","icon","jsx_runtime","lib_emptyOptions","lib_one","includeImageAlt","includeHtml","lib_all","splice","remove","items","parameters","chunkStart","unshift","subtokenize","events","lineIndex","otherIndex","otherEvent","subevents","more","jumps","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","eventIndex","stream","previous","token","context","startPosition","startPositions","tokenizer","parser","childEvents","gaps","current","adjust","breaks","sliceStream","next","defineSkip","_gfmTasklistFirstContentOfListItem","write","_container","micromark_util_combine_extensions_hasOwnProperty","unicodePunctuationInternal","regexCheck","asciiAlpha","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodeWhitespace","regex","fromCharCode","factorySpace","effects","ok","limit","POSITIVE_INFINITY","enter","consume","exit","tokenize","contentStart","attempt","constructs","lineStart","document_document","childFlow","childToken","lineStartOffset","continued","item","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","exitContainers","lazy","now","containerContinue","flow","flowContinue","writeToChild","eof","seen","entry","nok","document","null","blankLine","after","partial","content_content","chunkInside","contentEnd","continuationConstruct","contentContinue","resolve","prefixed","tail","sliceSerialize","initial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","text_text","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","tabs","chunks","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","called","thematicBreak","sequence","initialSize","marker","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","escape","factoryWhitespace","normalizeIdentifier","titleBefore","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","setextUnderline","paragraph","resolveTo","heading","htmlBlockNames","htmlRawNames","blankLineBefore","nonLazyContinuationStart","nonLazyContinuation","codeFenced","closeStart","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","sequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","index_dom_element","createElement","decodeNamedCharacterReference","characterReference","innerHTML","textContent","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","close","group","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","before","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","labelStartLink","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","sequenceFurther","closingTag","buffer","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeEnd","completeAttributeNameBefore","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationAfter","continuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","between","tailExitIndex","headEnterIndex","search","decodeNumericCharacterReference","base","parseInt","fromCodePoint","characterEscapeOrReference","decode","$2","head","hex","mdast_util_from_markdown_lib_own","mdast_util_from_markdown_lib_point","defaultOnError","left","right","remarkParse","doc","encoding","atCarriageReturn","extensions","mdastExtensions","compiler","config","transforms","canContainEols","autolink","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","image","listItem","spread","_spread","listItemValue","expectingFirstListItemValue","ancestor","listOrdered","listUnordered","reference","referenceType","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","depth","onexitdata","characterEscapeValue","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","characterReferenceType","resume","flowCodeInside","codeFencedFence","onexithardbreak","inReference","fragment","labelText","atHardBreak","setextHeadingSlurpLineEnding","setextHeadingLineSequence","codePointAt","setextHeadingText","configure","combined","extension","tree","tokenStack","listStack","prepareList","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","and","errorHandler","siblings","onExitError","lib_toString","ordered","postprocess","parse_parse","combineExtensions","all","syntaxExtension","hook","maybe","existing","add","createTokenizer","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","construct","addResult","onsuccessfulcheck","expandTabs","serializeChunks","atTab","main","chunkIndex","sliceChunks","view","startIndex","startBufferIndex","endIndex","endBufferIndex","shift","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","map","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","preprocess","endPosition","TextDecoder","lastIndex","Math","ceil","env","globalThis","deserializer","$","out","unpair","Date","flags","BigInt","deserialize","serialized","serialize_toString","asString","shouldSkip","TYPE","serializer","strict","json","pair","valueOf","toJSON","entries","toISOString","serialize","lossy","structured_clone_esm","structuredClone","any","normalizeUri","skip","encodeURIComponent","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","looksLikeANode","lib_ok","castFactory","anyFactory","tests","apply","nodeAsRecord","checkAsRecord","testFunction","lib_empty","visit","testOrVisitor","visitorOrReverse","maybeReverse","reverse","visitor","visitParents","factory","parents","subresult","grandparents","nodeAsParent","concat","revert","subtype","suffix","contents","listItemLoose","trimLine","handlers_handlers","blockquote","patch","applyData","break","delete","footnoteReference","counter","clobberPrefix","safeId","footnoteOrder","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","rowIndex","cellIndex","cells","cell","trimLines","last","toml","ignore","yaml","footnoteDefinition","state_own","state_emptyOptions","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","createState","footnoteById","handlers","handle","passThrough","shallow","unknown","unknownHandler","foot","footer","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","remarkRehype","destination","hastTree","run","bail","getPrototypeOf","Symbol","toStringTag","basename","ext","seenNonSlash","assertPath","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","segments","joined","minpath_browser_normalize","absolute","normalizeString","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","sep","JSON","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","VFile","history","messages","stored","assertNonEmpty","assertPart","lib_assertPath","stem","urlToPath","URL","getPathFromURLPosix","hostname","pathname","third","decodeURIComponent","fail","decoder","part","CallableInstance","constr","proto","func","setPrototypeOf","names","getOwnPropertyNames","p","descriptor","unified_lib_own","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","trough","fns","pipeline","middlewareIndex","callback","output","fn","trough_wrap","middleware","fnExpectsCallback","done","Promise","then","middelware","attacher","assertUnfrozen","freeze","transformer","parse","realFile","vfile","assertParser","process","assertCompiler","executor","reject","parseTree","realDone","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugins","plugin","entryIndex","primary","currentPrimary","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","toJsxRuntime","jsxDEV","jsxs","development","isStaticChildren","columnNumber","fileName","lineNumber","createEvaluater","colon","questionMark","numberSign"],"sourceRoot":""}