import { esm_default, find, hastToReact, html, pointEnd, pointStart, position, stringify, stringify2, svg } from "./chunk-PWTMFGTZ.js"; import { attention, autolink, blankLine, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, codes, combineExtensions, constants, content, decodeNamedCharacterReference, decodeNumericCharacterReference, decodeString, definition, factorySpace, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, markdownLineEnding, normalizeIdentifier, normalizeUri, push, resolveAll, setextUnderline, splice, subtokenize, thematicBreak, toString, types, values } from "./chunk-X4RPCSEH.js"; import { ok, unreachable, visit } from "./chunk-XDSGYFPY.js"; import { require_jsx_runtime } from "./chunk-U2Z7SM7H.js"; import { require_react } from "./chunk-LJSKIMYD.js"; import { __commonJS, __export, __toESM } from "./chunk-WOOG5QLI.js"; // ../../node_modules/.pnpm/inline-style-parser@0.2.7/node_modules/inline-style-parser/cjs/index.js var require_cjs = __commonJS({ "../../node_modules/.pnpm/inline-style-parser@0.2.7/node_modules/inline-style-parser/cjs/index.js"(exports, module) { "use strict"; var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g; var NEWLINE_REGEX = /\n/g; var WHITESPACE_REGEX = /^\s*/; var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/; var COLON_REGEX = /^:\s*/; var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/; var SEMICOLON_REGEX = /^[;\s]*/; var TRIM_REGEX = /^\s+|\s+$/g; var NEWLINE = "\n"; var FORWARD_SLASH = "/"; var ASTERISK = "*"; var EMPTY_STRING = ""; var TYPE_COMMENT = "comment"; var TYPE_DECLARATION = "declaration"; function index2(style, options) { if (typeof style !== "string") { throw new TypeError("First argument must be a string"); } if (!style) return []; options = options || {}; var lineno = 1; var column = 1; function updatePosition(str) { var lines = str.match(NEWLINE_REGEX); if (lines) lineno += lines.length; var i = str.lastIndexOf(NEWLINE); column = ~i ? str.length - i : column + str.length; } function position3() { var start2 = { line: lineno, column }; return function(node) { node.position = new Position(start2); whitespace2(); return node; }; } function Position(start2) { this.start = start2; this.end = { line: lineno, column }; this.source = options.source; } Position.prototype.content = style; function error(msg) { var err = new Error( options.source + ":" + lineno + ":" + column + ": " + msg ); err.reason = msg; err.filename = options.source; err.line = lineno; err.column = column; err.source = style; if (options.silent) ; else { throw err; } } function match(re2) { var m = re2.exec(style); if (!m) return; var str = m[0]; updatePosition(str); style = style.slice(str.length); return m; } function whitespace2() { match(WHITESPACE_REGEX); } function comments(rules) { var c; rules = rules || []; while (c = comment()) { if (c !== false) { rules.push(c); } } return rules; } function comment() { var pos = position3(); if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return; var i = 2; while (EMPTY_STRING != style.charAt(i) && (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))) { ++i; } i += 2; if (EMPTY_STRING === style.charAt(i - 1)) { return error("End of comment missing"); } var str = style.slice(2, i - 2); column += 2; updatePosition(str); style = style.slice(i); column += 2; return pos({ type: TYPE_COMMENT, comment: str }); } function declaration() { var pos = position3(); var prop = match(PROPERTY_REGEX); if (!prop) return; comment(); if (!match(COLON_REGEX)) return error("property missing ':'"); var val = match(VALUE_REGEX); var ret = pos({ type: TYPE_DECLARATION, property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)), value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING }); match(SEMICOLON_REGEX); return ret; } function declarations() { var decls = []; comments(decls); var decl; while (decl = declaration()) { if (decl !== false) { decls.push(decl); comments(decls); } } return decls; } whitespace2(); return declarations(); } function trim(str) { return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING; } module.exports = index2; } }); // ../../node_modules/.pnpm/style-to-object@1.0.14/node_modules/style-to-object/cjs/index.js var require_cjs2 = __commonJS({ "../../node_modules/.pnpm/style-to-object@1.0.14/node_modules/style-to-object/cjs/index.js"(exports) { "use strict"; var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = StyleToObject; var inline_style_parser_1 = __importDefault(require_cjs()); function StyleToObject(style, iterator) { let styleObject = null; if (!style || typeof style !== "string") { return styleObject; } const declarations = (0, inline_style_parser_1.default)(style); const hasIterator = typeof iterator === "function"; declarations.forEach((declaration) => { if (declaration.type !== "declaration") { return; } const { property, value } = declaration; if (hasIterator) { iterator(property, value, declaration); } else if (value) { styleObject = styleObject || {}; styleObject[property] = value; } }); return styleObject; } } }); // ../../node_modules/.pnpm/style-to-js@1.1.21/node_modules/style-to-js/cjs/utilities.js var require_utilities = __commonJS({ "../../node_modules/.pnpm/style-to-js@1.1.21/node_modules/style-to-js/cjs/utilities.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.camelCase = void 0; var CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/; var HYPHEN_REGEX = /-([a-z])/g; var NO_HYPHEN_REGEX = /^[^-]+$/; var VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/; var MS_VENDOR_PREFIX_REGEX = /^-(ms)-/; var skipCamelCase = function(property) { return !property || NO_HYPHEN_REGEX.test(property) || CUSTOM_PROPERTY_REGEX.test(property); }; var capitalize = function(match, character) { return character.toUpperCase(); }; var trimHyphen = function(match, prefix) { return "".concat(prefix, "-"); }; var camelCase = function(property, options) { if (options === void 0) { options = {}; } if (skipCamelCase(property)) { return property; } property = property.toLowerCase(); if (options.reactCompat) { property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen); } else { property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen); } return property.replace(HYPHEN_REGEX, capitalize); }; exports.camelCase = camelCase; } }); // ../../node_modules/.pnpm/style-to-js@1.1.21/node_modules/style-to-js/cjs/index.js var require_cjs3 = __commonJS({ "../../node_modules/.pnpm/style-to-js@1.1.21/node_modules/style-to-js/cjs/index.js"(exports, module) { "use strict"; var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; var style_to_object_1 = __importDefault(require_cjs2()); var utilities_1 = require_utilities(); function StyleToJS(style, options) { var output = {}; if (!style || typeof style !== "string") { return output; } (0, style_to_object_1.default)(style, function(property, value) { if (property && value) { output[(0, utilities_1.camelCase)(property, options)] = value; } }); return output; } StyleToJS.default = StyleToJS; module.exports = StyleToJS; } }); // ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js var require_ms = __commonJS({ "../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"(exports, module) { var s = 1e3; var m = s * 60; var h = m * 60; var d = h * 24; var w = d * 7; var y = d * 365.25; module.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === "string" && val.length > 0) { return parse2(val); } else if (type === "number" && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) ); }; function parse2(str) { str = String(str); if (str.length > 100) { return; } var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || "ms").toLowerCase(); switch (type) { case "years": case "year": case "yrs": case "yr": case "y": return n * y; case "weeks": case "week": case "w": return n * w; case "days": case "day": case "d": return n * d; case "hours": case "hour": case "hrs": case "hr": case "h": return n * h; case "minutes": case "minute": case "mins": case "min": case "m": return n * m; case "seconds": case "second": case "secs": case "sec": case "s": return n * s; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return n; default: return void 0; } } function fmtShort(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return Math.round(ms / d) + "d"; } if (msAbs >= h) { return Math.round(ms / h) + "h"; } if (msAbs >= m) { return Math.round(ms / m) + "m"; } if (msAbs >= s) { return Math.round(ms / s) + "s"; } return ms + "ms"; } function fmtLong(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return plural(ms, msAbs, d, "day"); } if (msAbs >= h) { return plural(ms, msAbs, h, "hour"); } if (msAbs >= m) { return plural(ms, msAbs, m, "minute"); } if (msAbs >= s) { return plural(ms, msAbs, s, "second"); } return ms + " ms"; } function plural(ms, msAbs, n, name2) { var isPlural = msAbs >= n * 1.5; return Math.round(ms / n) + " " + name2 + (isPlural ? "s" : ""); } } }); // ../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js var require_common = __commonJS({ "../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js"(exports, module) { function setup(env) { createDebug2.debug = createDebug2; createDebug2.default = createDebug2; createDebug2.coerce = coerce; createDebug2.disable = disable2; createDebug2.enable = enable; createDebug2.enabled = enabled; createDebug2.humanize = require_ms(); createDebug2.destroy = destroy; Object.keys(env).forEach((key) => { createDebug2[key] = env[key]; }); createDebug2.names = []; createDebug2.skips = []; createDebug2.formatters = {}; function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = (hash << 5) - hash + namespace.charCodeAt(i); hash |= 0; } return createDebug2.colors[Math.abs(hash) % createDebug2.colors.length]; } createDebug2.selectColor = selectColor; function createDebug2(namespace) { let prevTime; let enableOverride = null; let namespacesCache; let enabledCache; function debug2(...args) { if (!debug2.enabled) { return; } const self = debug2; const curr = Number(/* @__PURE__ */ new Date()); const ms = curr - (prevTime || curr); self.diff = ms; self.prev = prevTime; self.curr = curr; prevTime = curr; args[0] = createDebug2.coerce(args[0]); if (typeof args[0] !== "string") { args.unshift("%O"); } let index2 = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { if (match === "%%") { return "%"; } index2++; const formatter = createDebug2.formatters[format]; if (typeof formatter === "function") { const val = args[index2]; match = formatter.call(self, val); args.splice(index2, 1); index2--; } return match; }); createDebug2.formatArgs.call(self, args); const logFn = self.log || createDebug2.log; logFn.apply(self, args); } debug2.namespace = namespace; debug2.useColors = createDebug2.useColors(); debug2.color = createDebug2.selectColor(namespace); debug2.extend = extend2; debug2.destroy = createDebug2.destroy; Object.defineProperty(debug2, "enabled", { enumerable: true, configurable: false, get: () => { if (enableOverride !== null) { return enableOverride; } if (namespacesCache !== createDebug2.namespaces) { namespacesCache = createDebug2.namespaces; enabledCache = createDebug2.enabled(namespace); } return enabledCache; }, set: (v) => { enableOverride = v; } }); if (typeof createDebug2.init === "function") { createDebug2.init(debug2); } return debug2; } function extend2(namespace, delimiter) { const newDebug = createDebug2(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); newDebug.log = this.log; return newDebug; } function enable(namespaces) { createDebug2.save(namespaces); createDebug2.namespaces = namespaces; createDebug2.names = []; createDebug2.skips = []; const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); for (const ns of split) { if (ns[0] === "-") { createDebug2.skips.push(ns.slice(1)); } else { createDebug2.names.push(ns); } } } function matchesTemplate(search2, template) { let searchIndex = 0; let templateIndex = 0; let starIndex = -1; let matchIndex = 0; while (searchIndex < search2.length) { if (templateIndex < template.length && (template[templateIndex] === search2[searchIndex] || template[templateIndex] === "*")) { if (template[templateIndex] === "*") { starIndex = templateIndex; matchIndex = searchIndex; templateIndex++; } else { searchIndex++; templateIndex++; } } else if (starIndex !== -1) { templateIndex = starIndex + 1; matchIndex++; searchIndex = matchIndex; } else { return false; } } while (templateIndex < template.length && template[templateIndex] === "*") { templateIndex++; } return templateIndex === template.length; } function disable2() { const namespaces = [ ...createDebug2.names, ...createDebug2.skips.map((namespace) => "-" + namespace) ].join(","); createDebug2.enable(""); return namespaces; } function enabled(name2) { for (const skip of createDebug2.skips) { if (matchesTemplate(name2, skip)) { return false; } } for (const ns of createDebug2.names) { if (matchesTemplate(name2, ns)) { return true; } } return false; } function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } function destroy() { console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } createDebug2.enable(createDebug2.load()); return createDebug2; } module.exports = setup; } }); // ../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js var require_browser = __commonJS({ "../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js"(exports, module) { exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); exports.destroy = /* @__PURE__ */ (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } }; })(); exports.colors = [ "#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33" ]; function useColors() { if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { return true; } if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } let m; return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); } function formatArgs(args) { args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = "color: " + this.color; args.splice(1, 0, c, "color: inherit"); let index2 = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, (match) => { if (match === "%%") { return; } index2++; if (match === "%c") { lastC = index2; } }); args.splice(lastC, 0, c); } exports.log = console.debug || console.log || (() => { }); function save(namespaces) { try { if (namespaces) { exports.storage.setItem("debug", namespaces); } else { exports.storage.removeItem("debug"); } } catch (error) { } } function load() { let r; try { r = exports.storage.getItem("debug") || exports.storage.getItem("DEBUG"); } catch (error) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } function localstorage() { try { return localStorage; } catch (error) { } } module.exports = require_common()(exports); var { formatters } = module.exports; formatters.j = function(v) { try { return JSON.stringify(v); } catch (error) { return "[UnexpectedJSONParseError]: " + error.message; } }; } }); // ../../node_modules/.pnpm/extend@3.0.2/node_modules/extend/index.js var require_extend = __commonJS({ "../../node_modules/.pnpm/extend@3.0.2/node_modules/extend/index.js"(exports, module) { "use strict"; var hasOwn = Object.prototype.hasOwnProperty; var toStr = Object.prototype.toString; var defineProperty = Object.defineProperty; var gOPD = Object.getOwnPropertyDescriptor; var isArray = function isArray2(arr) { if (typeof Array.isArray === "function") { return Array.isArray(arr); } return toStr.call(arr) === "[object Array]"; }; var isPlainObject2 = function isPlainObject3(obj) { if (!obj || toStr.call(obj) !== "[object Object]") { return false; } var hasOwnConstructor = hasOwn.call(obj, "constructor"); var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf"); if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; } var key; for (key in obj) { } return typeof key === "undefined" || hasOwn.call(obj, key); }; var setProperty = function setProperty2(target, options) { if (defineProperty && options.name === "__proto__") { defineProperty(target, options.name, { enumerable: true, configurable: true, value: options.newValue, writable: true }); } else { target[options.name] = options.newValue; } }; var getProperty = function getProperty2(obj, name2) { if (name2 === "__proto__") { if (!hasOwn.call(obj, name2)) { return void 0; } else if (gOPD) { return gOPD(obj, name2).value; } } return obj[name2]; }; module.exports = function extend2() { var options, name2, src, copy, copyIsArray, clone; var target = arguments[0]; var i = 1; var length = arguments.length; var deep = false; if (typeof target === "boolean") { deep = target; target = arguments[1] || {}; i = 2; } if (target == null || typeof target !== "object" && typeof target !== "function") { target = {}; } for (; i < length; ++i) { options = arguments[i]; if (options != null) { for (name2 in options) { src = getProperty(target, name2); copy = getProperty(options, name2); if (target !== copy) { if (deep && copy && (isPlainObject2(copy) || (copyIsArray = isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && isArray(src) ? src : []; } else { clone = src && isPlainObject2(src) ? src : {}; } setProperty(target, { name: name2, newValue: extend2(deep, clone, copy) }); } else if (typeof copy !== "undefined") { setProperty(target, { name: name2, newValue: copy }); } } } } } return target; }; } }); // ../../node_modules/.pnpm/estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.js var nameRe = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u; var nameReJsx = /^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u; var emptyOptions = {}; function name(name2, options) { const settings = options || emptyOptions; const re2 = settings.jsx ? nameReJsx : nameRe; return re2.test(name2); } // ../../node_modules/.pnpm/hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.js var re = /[ \t\n\f\r]/g; function whitespace(thing) { return typeof thing === "object" ? thing.type === "text" ? empty(thing.value) : false : empty(thing); } function empty(value) { return value.replace(re, "") === ""; } // ../../node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.js var import_style_to_js = __toESM(require_cjs3(), 1); // ../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js function stringifyPosition(value) { if (!value || typeof value !== "object") { return ""; } if ("position" in value || "type" in value) { return position2(value.position); } if ("start" in value || "end" in value) { return position2(value); } if ("line" in value || "column" in value) { return point(value); } return ""; } function point(point3) { return index(point3 && point3.line) + ":" + index(point3 && point3.column); } function position2(pos) { return point(pos && pos.start) + "-" + point(pos && pos.end); } function index(value) { return value && typeof value === "number" ? value : 1; } // ../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/lib/index.js var VFileMessage = class extends Error { /** * Create a message for `reason`. * * > 🪦 **Note**: also has obsolete signatures. * * @overload * @param {string} reason * @param {Options | null | undefined} [options] * @returns * * @overload * @param {string} reason * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns * * @overload * @param {string} reason * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns * * @overload * @param {string} reason * @param {string | null | undefined} [origin] * @returns * * @overload * @param {Error | VFileMessage} cause * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns * * @overload * @param {Error | VFileMessage} cause * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns * * @overload * @param {Error | VFileMessage} cause * @param {string | null | undefined} [origin] * @returns * * @param {Error | VFileMessage | string} causeOrReason * Reason for message, should use markdown. * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace] * Configuration (optional). * @param {string | null | undefined} [origin] * Place in code where the message originates (example: * `'my-package:my-rule'` or `'my-rule'`). * @returns * Instance of `VFileMessage`. */ // eslint-disable-next-line complexity constructor(causeOrReason, optionsOrParentOrPlace, origin) { super(); if (typeof optionsOrParentOrPlace === "string") { origin = optionsOrParentOrPlace; optionsOrParentOrPlace = void 0; } let reason = ""; let options = {}; let legacyCause = false; if (optionsOrParentOrPlace) { if ("line" in optionsOrParentOrPlace && "column" in optionsOrParentOrPlace) { options = { place: optionsOrParentOrPlace }; } else if ("start" in optionsOrParentOrPlace && "end" in optionsOrParentOrPlace) { options = { place: optionsOrParentOrPlace }; } else if ("type" in optionsOrParentOrPlace) { options = { ancestors: [optionsOrParentOrPlace], place: optionsOrParentOrPlace.position }; } else { options = { ...optionsOrParentOrPlace }; } } if (typeof causeOrReason === "string") { reason = causeOrReason; } else if (!options.cause && causeOrReason) { legacyCause = true; reason = causeOrReason.message; options.cause = causeOrReason; } if (!options.ruleId && !options.source && typeof origin === "string") { const index2 = origin.indexOf(":"); if (index2 === -1) { options.ruleId = origin; } else { options.source = origin.slice(0, index2); options.ruleId = origin.slice(index2 + 1); } } if (!options.place && options.ancestors && options.ancestors) { const parent = options.ancestors[options.ancestors.length - 1]; if (parent) { options.place = parent.position; } } const start2 = options.place && "start" in options.place ? options.place.start : options.place; this.ancestors = options.ancestors || void 0; this.cause = options.cause || void 0; this.column = start2 ? start2.column : void 0; this.fatal = void 0; this.file = ""; this.message = reason; this.line = start2 ? start2.line : void 0; this.name = stringifyPosition(options.place) || "1:1"; this.place = options.place || void 0; this.reason = this.message; this.ruleId = options.ruleId || void 0; this.source = options.source || void 0; this.stack = legacyCause && options.cause && typeof options.cause.stack === "string" ? options.cause.stack : ""; this.actual = void 0; this.expected = void 0; this.note = void 0; this.url = void 0; } }; VFileMessage.prototype.file = ""; VFileMessage.prototype.name = ""; VFileMessage.prototype.reason = ""; VFileMessage.prototype.message = ""; VFileMessage.prototype.stack = ""; VFileMessage.prototype.column = void 0; VFileMessage.prototype.line = void 0; VFileMessage.prototype.ancestors = void 0; VFileMessage.prototype.cause = void 0; VFileMessage.prototype.fatal = void 0; VFileMessage.prototype.place = void 0; VFileMessage.prototype.ruleId = void 0; VFileMessage.prototype.source = void 0; // ../../node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.js var own = {}.hasOwnProperty; var emptyMap = /* @__PURE__ */ new Map(); var cap = /[A-Z]/g; var tableElements = /* @__PURE__ */ new Set(["table", "tbody", "thead", "tfoot", "tr"]); var tableCellElement = /* @__PURE__ */ new Set(["td", "th"]); var docs = "https://github.com/syntax-tree/hast-util-to-jsx-runtime"; function toJsxRuntime(tree, options) { if (!options || options.Fragment === void 0) { throw new TypeError("Expected `Fragment` in options"); } const filePath = options.filePath || void 0; let create; if (options.development) { if (typeof options.jsxDEV !== "function") { throw new TypeError( "Expected `jsxDEV` in options when `development: true`" ); } create = developmentCreate(filePath, options.jsxDEV); } else { if (typeof options.jsx !== "function") { throw new TypeError("Expected `jsx` in production options"); } if (typeof options.jsxs !== "function") { throw new TypeError("Expected `jsxs` in production options"); } create = productionCreate(filePath, options.jsx, options.jsxs); } const state = { Fragment: options.Fragment, ancestors: [], components: options.components || {}, create, elementAttributeNameCase: options.elementAttributeNameCase || "react", evaluater: options.createEvaluater ? options.createEvaluater() : void 0, filePath, ignoreInvalidStyle: options.ignoreInvalidStyle || false, passKeys: options.passKeys !== false, passNode: options.passNode || false, schema: options.space === "svg" ? svg : html, stylePropertyNameCase: options.stylePropertyNameCase || "dom", tableCellAlignToStyle: options.tableCellAlignToStyle !== false }; const result = one(state, tree, void 0); if (result && typeof result !== "string") { return result; } return state.create( tree, state.Fragment, { children: result || void 0 }, void 0 ); } function one(state, node, key) { if (node.type === "element") { return element(state, node, key); } if (node.type === "mdxFlowExpression" || node.type === "mdxTextExpression") { return mdxExpression(state, node); } if (node.type === "mdxJsxFlowElement" || node.type === "mdxJsxTextElement") { return mdxJsxElement(state, node, key); } if (node.type === "mdxjsEsm") { return mdxEsm(state, node); } if (node.type === "root") { return root(state, node, key); } if (node.type === "text") { return text(state, node); } } function element(state, node, key) { const parentSchema = state.schema; let schema = parentSchema; if (node.tagName.toLowerCase() === "svg" && parentSchema.space === "html") { schema = svg; state.schema = schema; } state.ancestors.push(node); const type = findComponentFromName(state, node.tagName, false); const props = createElementProps(state, node); let children = createChildren(state, node); if (tableElements.has(node.tagName)) { children = children.filter(function(child) { return typeof child === "string" ? !whitespace(child) : true; }); } addNode(state, props, type, node); addChildren(props, children); state.ancestors.pop(); state.schema = parentSchema; return state.create(node, type, props, key); } function mdxExpression(state, node) { if (node.data && node.data.estree && state.evaluater) { const program = node.data.estree; const expression = program.body[0]; ok(expression.type === "ExpressionStatement"); return ( /** @type {Child | undefined} */ state.evaluater.evaluateExpression(expression.expression) ); } crashEstree(state, node.position); } function mdxEsm(state, node) { if (node.data && node.data.estree && state.evaluater) { return ( /** @type {Child | undefined} */ state.evaluater.evaluateProgram(node.data.estree) ); } crashEstree(state, node.position); } function mdxJsxElement(state, node, key) { const parentSchema = state.schema; let schema = parentSchema; if (node.name === "svg" && parentSchema.space === "html") { schema = svg; state.schema = schema; } state.ancestors.push(node); const type = node.name === null ? state.Fragment : findComponentFromName(state, node.name, true); const props = createJsxElementProps(state, node); const children = createChildren(state, node); addNode(state, props, type, node); addChildren(props, children); state.ancestors.pop(); state.schema = parentSchema; return state.create(node, type, props, key); } function root(state, node, key) { const props = {}; addChildren(props, createChildren(state, node)); return state.create(node, state.Fragment, props, key); } function text(_, node) { return node.value; } function addNode(state, props, type, node) { if (typeof type !== "string" && type !== state.Fragment && state.passNode) { props.node = node; } } function addChildren(props, children) { if (children.length > 0) { const value = children.length > 1 ? children : children[0]; if (value) { props.children = value; } } } function productionCreate(_, jsx2, jsxs2) { return create; function create(_2, type, props, key) { const isStaticChildren = Array.isArray(props.children); const fn = isStaticChildren ? jsxs2 : jsx2; return key ? fn(type, props, key) : fn(type, props); } } function developmentCreate(filePath, jsxDEV) { return create; function create(node, type, props, key) { const isStaticChildren = Array.isArray(props.children); const point3 = pointStart(node); return jsxDEV( type, props, key, isStaticChildren, { columnNumber: point3 ? point3.column - 1 : void 0, fileName: filePath, lineNumber: point3 ? point3.line : void 0 }, void 0 ); } } function createElementProps(state, node) { const props = {}; let alignValue; let prop; for (prop in node.properties) { if (prop !== "children" && own.call(node.properties, prop)) { const result = createProperty(state, prop, node.properties[prop]); if (result) { const [key, value] = result; if (state.tableCellAlignToStyle && key === "align" && typeof value === "string" && tableCellElement.has(node.tagName)) { alignValue = value; } else { props[key] = value; } } } } if (alignValue) { const style = ( /** @type {Style} */ props.style || (props.style = {}) ); style[state.stylePropertyNameCase === "css" ? "text-align" : "textAlign"] = alignValue; } return props; } function createJsxElementProps(state, node) { const props = {}; for (const attribute of node.attributes) { if (attribute.type === "mdxJsxExpressionAttribute") { if (attribute.data && attribute.data.estree && state.evaluater) { const program = attribute.data.estree; const expression = program.body[0]; ok(expression.type === "ExpressionStatement"); const objectExpression = expression.expression; ok(objectExpression.type === "ObjectExpression"); const property = objectExpression.properties[0]; ok(property.type === "SpreadElement"); Object.assign( props, state.evaluater.evaluateExpression(property.argument) ); } else { crashEstree(state, node.position); } } else { const name2 = attribute.name; let value; if (attribute.value && typeof attribute.value === "object") { if (attribute.value.data && attribute.value.data.estree && state.evaluater) { const program = attribute.value.data.estree; const expression = program.body[0]; ok(expression.type === "ExpressionStatement"); value = state.evaluater.evaluateExpression(expression.expression); } else { crashEstree(state, node.position); } } else { value = attribute.value === null ? true : attribute.value; } props[name2] = /** @type {Props[keyof Props]} */ value; } } return props; } function createChildren(state, node) { const children = []; let index2 = -1; const countsByName = state.passKeys ? /* @__PURE__ */ new Map() : emptyMap; while (++index2 < node.children.length) { const child = node.children[index2]; let key; if (state.passKeys) { const name2 = child.type === "element" ? child.tagName : child.type === "mdxJsxFlowElement" || child.type === "mdxJsxTextElement" ? child.name : void 0; if (name2) { const count = countsByName.get(name2) || 0; key = name2 + "-" + count; countsByName.set(name2, count + 1); } } const result = one(state, child, key); if (result !== void 0) children.push(result); } return children; } function createProperty(state, prop, value) { const info = find(state.schema, prop); if (value === null || value === void 0 || typeof value === "number" && Number.isNaN(value)) { return; } if (Array.isArray(value)) { value = info.commaSeparated ? stringify(value) : stringify2(value); } if (info.property === "style") { let styleObject = typeof value === "object" ? value : parseStyle(state, String(value)); if (state.stylePropertyNameCase === "css") { styleObject = transformStylesToCssCasing(styleObject); } return ["style", styleObject]; } return [ state.elementAttributeNameCase === "react" && info.space ? hastToReact[info.property] || info.property : info.attribute, value ]; } function parseStyle(state, value) { try { return (0, import_style_to_js.default)(value, { reactCompat: true }); } catch (error) { if (state.ignoreInvalidStyle) { return {}; } const cause = ( /** @type {Error} */ error ); const message = new VFileMessage("Cannot parse `style` attribute", { ancestors: state.ancestors, cause, ruleId: "style", source: "hast-util-to-jsx-runtime" }); message.file = state.filePath || void 0; message.url = docs + "#cannot-parse-style-attribute"; throw message; } } function findComponentFromName(state, name2, allowExpression) { let result; if (!allowExpression) { result = { type: "Literal", value: name2 }; } else if (name2.includes(".")) { const identifiers = name2.split("."); let index2 = -1; let node; while (++index2 < identifiers.length) { const prop = name(identifiers[index2]) ? { type: "Identifier", name: identifiers[index2] } : { type: "Literal", value: identifiers[index2] }; node = node ? { type: "MemberExpression", object: node, property: prop, computed: Boolean(index2 && prop.type === "Literal"), optional: false } : prop; } ok(node, "always a result"); result = node; } else { result = name(name2) && !/^[a-z]/.test(name2) ? { type: "Identifier", name: name2 } : { type: "Literal", value: name2 }; } if (result.type === "Literal") { const name3 = ( /** @type {string | number} */ result.value ); return own.call(state.components, name3) ? state.components[name3] : name3; } if (state.evaluater) { return state.evaluater.evaluateExpression(result); } crashEstree(state); } function crashEstree(state, place) { const message = new VFileMessage( "Cannot handle MDX estrees without `createEvaluater`", { ancestors: state.ancestors, place, ruleId: "mdx-estree", source: "hast-util-to-jsx-runtime" } ); message.file = state.filePath || void 0; message.url = docs + "#cannot-handle-mdx-estrees-without-createevaluater"; throw message; } function transformStylesToCssCasing(domCasing) { const cssCasing = {}; let from; for (from in domCasing) { if (own.call(domCasing, from)) { cssCasing[transformStyleToCssCasing(from)] = domCasing[from]; } } return cssCasing; } function transformStyleToCssCasing(from) { let to = from.replace(cap, toDash); if (to.slice(0, 3) === "ms-") to = "-" + to; return to; } function toDash($0) { return "-" + $0.toLowerCase(); } // ../../node_modules/.pnpm/html-url-attributes@3.0.1/node_modules/html-url-attributes/lib/index.js var urlAttributes = { action: ["form"], cite: ["blockquote", "del", "ins", "q"], data: ["object"], formAction: ["button", "input"], href: ["a", "area", "base", "link"], icon: ["menuitem"], itemId: null, manifest: ["html"], ping: ["a", "area"], poster: ["video"], src: [ "audio", "embed", "iframe", "img", "input", "script", "source", "track", "video" ] }; // ../../node_modules/.pnpm/react-markdown@10.1.0_@types+react@19.2.7_react@19.2.3/node_modules/react-markdown/lib/index.js var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var import_react = __toESM(require_react(), 1); // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/compile.js var hasOwnProperty = {}.hasOwnProperty; // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/content.js var content2 = { tokenize: initializeContent }; function initializeContent(effects) { const contentStart = effects.attempt( this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial ); let previous; return contentStart; function afterContentStartConstruct(code2) { ok( code2 === codes.eof || markdownLineEnding(code2), "expected eol or eof" ); if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.lineEnding); effects.consume(code2); effects.exit(types.lineEnding); return factorySpace(effects, contentStart, types.linePrefix); } function paragraphInitial(code2) { ok( code2 !== codes.eof && !markdownLineEnding(code2), "expected anything other than a line ending or EOF" ); effects.enter(types.paragraph); return lineStart(code2); } function lineStart(code2) { const token = effects.enter(types.chunkText, { contentType: constants.contentTypeText, previous }); if (previous) { previous.next = token; } previous = token; return data(code2); } function data(code2) { if (code2 === codes.eof) { effects.exit(types.chunkText); effects.exit(types.paragraph); effects.consume(code2); return; } if (markdownLineEnding(code2)) { effects.consume(code2); effects.exit(types.chunkText); return lineStart; } effects.consume(code2); return data; } } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/document.js var document2 = { tokenize: initializeDocument }; var containerConstruct = { tokenize: tokenizeContainer }; function initializeDocument(effects) { const self = this; const stack = []; let continued = 0; let childFlow; let childToken; let lineStartOffset; return start2; function start2(code2) { if (continued < stack.length) { const item = stack[continued]; self.containerState = item[1]; ok( item[0].continuation, "expected `continuation` to be defined on container construct" ); return effects.attempt( item[0].continuation, documentContinue, checkNewContainers )(code2); } return checkNewContainers(code2); } function documentContinue(code2) { ok( self.containerState, "expected `containerState` to be defined after continuation" ); continued++; if (self.containerState._closeFlow) { self.containerState._closeFlow = void 0; if (childFlow) { closeFlow(); } const indexBeforeExits = self.events.length; let indexBeforeFlow = indexBeforeExits; let point3; while (indexBeforeFlow--) { if (self.events[indexBeforeFlow][0] === "exit" && self.events[indexBeforeFlow][1].type === types.chunkFlow) { point3 = self.events[indexBeforeFlow][1].end; break; } } ok(point3, "could not find previous flow chunk"); exitContainers(continued); let index2 = indexBeforeExits; while (index2 < self.events.length) { self.events[index2][1].end = { ...point3 }; index2++; } splice( self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits) ); self.events.length = index2; return checkNewContainers(code2); } return start2(code2); } function checkNewContainers(code2) { if (continued === stack.length) { if (!childFlow) { return documentContinued(code2); } if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { return flowStart(code2); } self.interrupt = Boolean( childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack ); } self.containerState = {}; return effects.check( containerConstruct, thereIsANewContainer, thereIsNoNewContainer )(code2); } function thereIsANewContainer(code2) { if (childFlow) closeFlow(); exitContainers(continued); return documentContinued(code2); } function thereIsNoNewContainer(code2) { self.parser.lazy[self.now().line] = continued !== stack.length; lineStartOffset = self.now().offset; return flowStart(code2); } function documentContinued(code2) { self.containerState = {}; return effects.attempt( containerConstruct, containerContinue, flowStart )(code2); } function containerContinue(code2) { ok( self.currentConstruct, "expected `currentConstruct` to be defined on tokenizer" ); ok( self.containerState, "expected `containerState` to be defined on tokenizer" ); continued++; stack.push([self.currentConstruct, self.containerState]); return documentContinued(code2); } function flowStart(code2) { if (code2 === codes.eof) { if (childFlow) closeFlow(); exitContainers(0); effects.consume(code2); return; } childFlow = childFlow || self.parser.flow(self.now()); effects.enter(types.chunkFlow, { _tokenizer: childFlow, contentType: constants.contentTypeFlow, previous: childToken }); return flowContinue(code2); } function flowContinue(code2) { if (code2 === codes.eof) { writeToChild(effects.exit(types.chunkFlow), true); exitContainers(0); effects.consume(code2); return; } if (markdownLineEnding(code2)) { effects.consume(code2); writeToChild(effects.exit(types.chunkFlow)); continued = 0; self.interrupt = void 0; return start2; } effects.consume(code2); return flowContinue; } function writeToChild(token, endOfFile) { ok(childFlow, "expected `childFlow` to be defined when continuing"); const stream = self.sliceStream(token); if (endOfFile) stream.push(null); token.previous = childToken; if (childToken) childToken.next = token; childToken = token; childFlow.defineSkip(token.start); childFlow.write(stream); if (self.parser.lazy[token.start.line]) { let index2 = childFlow.events.length; while (index2--) { if ( // The token starts before the line ending… childFlow.events[index2][1].start.offset < lineStartOffset && // …and either is not ended yet… (!childFlow.events[index2][1].end || // …or ends after it. childFlow.events[index2][1].end.offset > lineStartOffset) ) { return; } } const indexBeforeExits = self.events.length; let indexBeforeFlow = indexBeforeExits; let seen; let point3; while (indexBeforeFlow--) { if (self.events[indexBeforeFlow][0] === "exit" && self.events[indexBeforeFlow][1].type === types.chunkFlow) { if (seen) { point3 = self.events[indexBeforeFlow][1].end; break; } seen = true; } } ok(point3, "could not find previous flow chunk"); exitContainers(continued); index2 = indexBeforeExits; while (index2 < self.events.length) { self.events[index2][1].end = { ...point3 }; index2++; } splice( self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits) ); self.events.length = index2; } } function exitContainers(size) { let index2 = stack.length; while (index2-- > size) { const entry = stack[index2]; self.containerState = entry[1]; ok( entry[0].exit, "expected `exit` to be defined on container construct" ); entry[0].exit.call(self, effects); } stack.length = size; } function closeFlow() { ok( self.containerState, "expected `containerState` to be defined when closing flow" ); ok(childFlow, "expected `childFlow` to be defined when closing it"); childFlow.write([codes.eof]); childToken = void 0; childFlow = void 0; self.containerState._closeFlow = void 0; } } function tokenizeContainer(effects, ok2, nok) { ok( this.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return factorySpace( effects, effects.attempt(this.parser.constructs.document, ok2, nok), types.linePrefix, this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize ); } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/flow.js var flow = { tokenize: initializeFlow }; function initializeFlow(effects) { const self = this; const initial = effects.attempt( // Try to parse a blank line. blankLine, atBlankEnding, // Try to parse initial flow (essentially, only code). effects.attempt( this.parser.constructs.flowInitial, afterConstruct, factorySpace( effects, effects.attempt( this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct) ), types.linePrefix ) ) ); return initial; function atBlankEnding(code2) { ok( code2 === codes.eof || markdownLineEnding(code2), "expected eol or eof" ); if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.lineEndingBlank); effects.consume(code2); effects.exit(types.lineEndingBlank); self.currentConstruct = void 0; return initial; } function afterConstruct(code2) { ok( code2 === codes.eof || markdownLineEnding(code2), "expected eol or eof" ); if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.lineEnding); effects.consume(code2); effects.exit(types.lineEnding); self.currentConstruct = void 0; return initial; } } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/text.js var resolver = { resolveAll: createResolver() }; var string = initializeFactory("string"); var text2 = initializeFactory("text"); function initializeFactory(field) { return { resolveAll: createResolver( field === "text" ? resolveAllLineSuffixes : void 0 ), tokenize: initializeText }; function initializeText(effects) { const self = this; const constructs = this.parser.constructs[field]; const text5 = effects.attempt(constructs, start2, notText); return start2; function start2(code2) { return atBreak(code2) ? text5(code2) : notText(code2); } function notText(code2) { if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.data); effects.consume(code2); return data; } function data(code2) { if (atBreak(code2)) { effects.exit(types.data); return text5(code2); } effects.consume(code2); return data; } function atBreak(code2) { if (code2 === codes.eof) { return true; } const list3 = constructs[code2]; let index2 = -1; if (list3) { ok(Array.isArray(list3), "expected `disable.null` to be populated"); while (++index2 < list3.length) { const item = list3[index2]; if (!item.previous || item.previous.call(self, self.previous)) { return true; } } } return false; } } } function createResolver(extraResolver) { return resolveAllText; function resolveAllText(events, context) { let index2 = -1; let enter; while (++index2 <= events.length) { if (enter === void 0) { if (events[index2] && events[index2][1].type === types.data) { enter = index2; index2++; } } else if (!events[index2] || events[index2][1].type !== types.data) { if (index2 !== enter + 2) { events[enter][1].end = events[index2 - 1][1].end; events.splice(enter + 2, index2 - enter - 2); index2 = enter + 2; } enter = void 0; } } return extraResolver ? extraResolver(events, context) : events; } } function resolveAllLineSuffixes(events, context) { let eventIndex = 0; while (++eventIndex <= events.length) { if ((eventIndex === events.length || events[eventIndex][1].type === types.lineEnding) && events[eventIndex - 1][1].type === types.data) { const data = events[eventIndex - 1][1]; const chunks = context.sliceStream(data); let index2 = chunks.length; let bufferIndex = -1; let size = 0; let tabs; while (index2--) { const chunk = chunks[index2]; if (typeof chunk === "string") { bufferIndex = chunk.length; while (chunk.charCodeAt(bufferIndex - 1) === codes.space) { size++; bufferIndex--; } if (bufferIndex) break; bufferIndex = -1; } else if (chunk === codes.horizontalTab) { tabs = true; size++; } else if (chunk === codes.virtualSpace) { } else { index2++; break; } } if (context._contentTypeTextTrailing && eventIndex === events.length) { size = 0; } if (size) { const token = { type: eventIndex === events.length || tabs || size < constants.hardBreakPrefixSizeMin ? types.lineSuffix : types.hardBreakTrailing, start: { _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex, _index: data.start._index + index2, line: data.end.line, column: data.end.column - size, offset: data.end.offset - size }, end: { ...data.end } }; data.end = { ...token.start }; if (data.start.offset === data.end.offset) { Object.assign(data, token); } else { events.splice( eventIndex, 0, ["enter", token, context], ["exit", token, context] ); eventIndex += 2; } } eventIndex++; } } return events; } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/constructs.js var constructs_exports = {}; __export(constructs_exports, { attentionMarkers: () => attentionMarkers, contentInitial: () => contentInitial, disable: () => disable, document: () => document3, flow: () => flow2, flowInitial: () => flowInitial, insideSpan: () => insideSpan, string: () => string2, text: () => text3 }); var document3 = { [codes.asterisk]: list, [codes.plusSign]: list, [codes.dash]: list, [codes.digit0]: list, [codes.digit1]: list, [codes.digit2]: list, [codes.digit3]: list, [codes.digit4]: list, [codes.digit5]: list, [codes.digit6]: list, [codes.digit7]: list, [codes.digit8]: list, [codes.digit9]: list, [codes.greaterThan]: blockQuote }; var contentInitial = { [codes.leftSquareBracket]: definition }; var flowInitial = { [codes.horizontalTab]: codeIndented, [codes.virtualSpace]: codeIndented, [codes.space]: codeIndented }; var flow2 = { [codes.numberSign]: headingAtx, [codes.asterisk]: thematicBreak, [codes.dash]: [setextUnderline, thematicBreak], [codes.lessThan]: htmlFlow, [codes.equalsTo]: setextUnderline, [codes.underscore]: thematicBreak, [codes.graveAccent]: codeFenced, [codes.tilde]: codeFenced }; var string2 = { [codes.ampersand]: characterReference, [codes.backslash]: characterEscape }; var text3 = { [codes.carriageReturn]: lineEnding, [codes.lineFeed]: lineEnding, [codes.carriageReturnLineFeed]: lineEnding, [codes.exclamationMark]: labelStartImage, [codes.ampersand]: characterReference, [codes.asterisk]: attention, [codes.lessThan]: [autolink, htmlText], [codes.leftSquareBracket]: labelStartLink, [codes.backslash]: [hardBreakEscape, characterEscape], [codes.rightSquareBracket]: labelEnd, [codes.underscore]: attention, [codes.graveAccent]: codeText }; var insideSpan = { null: [attention, resolver] }; var attentionMarkers = { null: [codes.asterisk, codes.underscore] }; var disable = { null: [] }; // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/create-tokenizer.js var import_debug = __toESM(require_browser(), 1); var debug = (0, import_debug.default)("micromark"); function createTokenizer(parser, initialize, from) { let point3 = { _bufferIndex: -1, _index: 0, line: from && from.line || 1, column: from && from.column || 1, offset: from && from.offset || 0 }; const columnStart = {}; const resolveAllConstructs = []; let chunks = []; let stack = []; let consumed = true; const effects = { attempt: constructFactory(onsuccessfulconstruct), check: constructFactory(onsuccessfulcheck), consume, enter, exit, interrupt: constructFactory(onsuccessfulcheck, { interrupt: true }) }; const context = { code: codes.eof, containerState: {}, defineSkip, events: [], now, parser, previous: codes.eof, sliceSerialize, sliceStream, write }; let state = initialize.tokenize.call(context, effects); let expectedCode; if (initialize.resolveAll) { resolveAllConstructs.push(initialize); } return context; function write(slice) { chunks = push(chunks, slice); main(); if (chunks[chunks.length - 1] !== codes.eof) { return []; } addResult(initialize, 0); context.events = resolveAll(resolveAllConstructs, context.events, context); return context.events; } function sliceSerialize(token, expandTabs) { return serializeChunks(sliceStream(token), expandTabs); } function sliceStream(token) { return sliceChunks(chunks, token); } function now() { const { _bufferIndex, _index, line, column, offset } = point3; return { _bufferIndex, _index, line, column, offset }; } function defineSkip(value) { columnStart[value.line] = value.column; accountForPotentialSkip(); debug("position: define skip: `%j`", point3); } function main() { let chunkIndex; while (point3._index < chunks.length) { const chunk = chunks[point3._index]; if (typeof chunk === "string") { chunkIndex = point3._index; if (point3._bufferIndex < 0) { point3._bufferIndex = 0; } while (point3._index === chunkIndex && point3._bufferIndex < chunk.length) { go(chunk.charCodeAt(point3._bufferIndex)); } } else { go(chunk); } } } function go(code2) { ok(consumed === true, "expected character to be consumed"); consumed = void 0; debug("main: passing `%s` to %s", code2, state && state.name); expectedCode = code2; ok(typeof state === "function", "expected state"); state = state(code2); } function consume(code2) { ok(code2 === expectedCode, "expected given code to equal expected code"); debug("consume: `%s`", code2); ok( consumed === void 0, "expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used" ); ok( code2 === null ? context.events.length === 0 || context.events[context.events.length - 1][0] === "exit" : context.events[context.events.length - 1][0] === "enter", "expected last token to be open" ); if (markdownLineEnding(code2)) { point3.line++; point3.column = 1; point3.offset += code2 === codes.carriageReturnLineFeed ? 2 : 1; accountForPotentialSkip(); debug("position: after eol: `%j`", point3); } else if (code2 !== codes.virtualSpace) { point3.column++; point3.offset++; } if (point3._bufferIndex < 0) { point3._index++; } else { point3._bufferIndex++; if (point3._bufferIndex === // Points w/ non-negative `_bufferIndex` reference // strings. /** @type {string} */ chunks[point3._index].length) { point3._bufferIndex = -1; point3._index++; } } context.previous = code2; consumed = true; } function enter(type, fields) { const token = fields || {}; token.type = type; token.start = now(); ok(typeof type === "string", "expected string type"); ok(type.length > 0, "expected non-empty string"); debug("enter: `%s`", type); context.events.push(["enter", token, context]); stack.push(token); return token; } function exit(type) { ok(typeof type === "string", "expected string type"); ok(type.length > 0, "expected non-empty string"); const token = stack.pop(); ok(token, "cannot close w/o open tokens"); token.end = now(); ok(type === token.type, "expected exit token to match current token"); ok( !(token.start._index === token.end._index && token.start._bufferIndex === token.end._bufferIndex), "expected non-empty token (`" + type + "`)" ); debug("exit: `%s`", token.type); context.events.push(["exit", token, context]); return token; } function onsuccessfulconstruct(construct, info) { addResult(construct, info.from); } function onsuccessfulcheck(_, info) { info.restore(); } function constructFactory(onreturn, fields) { return hook; function hook(constructs, returnState, bogusState) { let listOfConstructs; let constructIndex; let currentConstruct; let info; return Array.isArray(constructs) ? ( /* c8 ignore next 1 */ handleListOfConstructs(constructs) ) : "tokenize" in constructs ? ( // Looks like a construct. handleListOfConstructs([ /** @type {Construct} */ constructs ]) ) : handleMapOfConstructs(constructs); function handleMapOfConstructs(map) { return start2; function start2(code2) { const left = code2 !== null && map[code2]; const all = code2 !== null && map.null; const list3 = [ // To do: add more extension tests. /* c8 ignore next 2 */ ...Array.isArray(left) ? left : left ? [left] : [], ...Array.isArray(all) ? all : all ? [all] : [] ]; return handleListOfConstructs(list3)(code2); } } function handleListOfConstructs(list3) { listOfConstructs = list3; constructIndex = 0; if (list3.length === 0) { ok(bogusState, "expected `bogusState` to be given"); return bogusState; } return handleConstruct(list3[constructIndex]); } function handleConstruct(construct) { return start2; function start2(code2) { info = store(); currentConstruct = construct; if (!construct.partial) { context.currentConstruct = construct; } ok( context.parser.constructs.disable.null, "expected `disable.null` to be populated" ); if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) { return nok(code2); } return construct.tokenize.call( // If we do have fields, create an object w/ `context` as its // prototype. // This allows a “live binding”, which is needed for `interrupt`. fields ? Object.assign(Object.create(context), fields) : context, effects, ok2, nok )(code2); } } function ok2(code2) { ok(code2 === expectedCode, "expected code"); consumed = true; onreturn(currentConstruct, info); return returnState; } function nok(code2) { ok(code2 === expectedCode, "expected code"); consumed = true; info.restore(); if (++constructIndex < listOfConstructs.length) { return handleConstruct(listOfConstructs[constructIndex]); } return bogusState; } } } function addResult(construct, from2) { if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { resolveAllConstructs.push(construct); } if (construct.resolve) { splice( context.events, from2, context.events.length - from2, construct.resolve(context.events.slice(from2), context) ); } if (construct.resolveTo) { context.events = construct.resolveTo(context.events, context); } ok( construct.partial || context.events.length === 0 || context.events[context.events.length - 1][0] === "exit", "expected last token to end" ); } function store() { const startPoint = now(); const startPrevious = context.previous; const startCurrentConstruct = context.currentConstruct; const startEventsIndex = context.events.length; const startStack = Array.from(stack); return { from: startEventsIndex, restore }; function restore() { point3 = startPoint; context.previous = startPrevious; context.currentConstruct = startCurrentConstruct; context.events.length = startEventsIndex; stack = startStack; accountForPotentialSkip(); debug("position: restore: `%j`", point3); } } function accountForPotentialSkip() { if (point3.line in columnStart && point3.column < 2) { point3.column = columnStart[point3.line]; point3.offset += columnStart[point3.line] - 1; } } } function sliceChunks(chunks, token) { const startIndex = token.start._index; const startBufferIndex = token.start._bufferIndex; const endIndex = token.end._index; const endBufferIndex = token.end._bufferIndex; let view; if (startIndex === endIndex) { ok(endBufferIndex > -1, "expected non-negative end buffer index"); ok(startBufferIndex > -1, "expected non-negative start buffer index"); view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; } else { view = chunks.slice(startIndex, endIndex); if (startBufferIndex > -1) { const head = view[0]; if (typeof head === "string") { view[0] = head.slice(startBufferIndex); } else { ok(startBufferIndex === 0, "expected `startBufferIndex` to be `0`"); view.shift(); } } if (endBufferIndex > 0) { view.push(chunks[endIndex].slice(0, endBufferIndex)); } } return view; } function serializeChunks(chunks, expandTabs) { let index2 = -1; const result = []; let atTab; while (++index2 < chunks.length) { const chunk = chunks[index2]; let value; if (typeof chunk === "string") { value = chunk; } else switch (chunk) { case codes.carriageReturn: { value = values.cr; break; } case codes.lineFeed: { value = values.lf; break; } case codes.carriageReturnLineFeed: { value = values.cr + values.lf; break; } case codes.horizontalTab: { value = expandTabs ? values.space : values.ht; break; } case codes.virtualSpace: { if (!expandTabs && atTab) continue; value = values.space; break; } default: { ok(typeof chunk === "number", "expected number"); value = String.fromCharCode(chunk); } } atTab = chunk === codes.horizontalTab; result.push(value); } return result.join(""); } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/parse.js function parse(options) { const settings = options || {}; const constructs = ( /** @type {FullNormalizedExtension} */ combineExtensions([constructs_exports, ...settings.extensions || []]) ); const parser = { constructs, content: create(content2), defined: [], document: create(document2), flow: create(flow), lazy: {}, string: create(string), text: create(text2) }; return parser; function create(initial) { return creator; function creator(from) { return createTokenizer(parser, initial, from); } } } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/postprocess.js function postprocess(events) { while (!subtokenize(events)) { } return events; } // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/preprocess.js var search = /[\0\t\n\r]/g; function preprocess() { let column = 1; let buffer = ""; let start2 = true; let atCarriageReturn; return preprocessor; function preprocessor(value, encoding, end) { const chunks = []; let match; let next; let startPosition; let endPosition; let code2; value = buffer + (typeof value === "string" ? value.toString() : new TextDecoder(encoding || void 0).decode(value)); startPosition = 0; buffer = ""; if (start2) { if (value.charCodeAt(0) === codes.byteOrderMarker) { startPosition++; } start2 = void 0; } while (startPosition < value.length) { search.lastIndex = startPosition; match = search.exec(value); endPosition = match && match.index !== void 0 ? match.index : value.length; code2 = value.charCodeAt(endPosition); if (!match) { buffer = value.slice(startPosition); break; } if (code2 === codes.lf && startPosition === endPosition && atCarriageReturn) { chunks.push(codes.carriageReturnLineFeed); atCarriageReturn = void 0; } else { if (atCarriageReturn) { chunks.push(codes.carriageReturn); atCarriageReturn = void 0; } if (startPosition < endPosition) { chunks.push(value.slice(startPosition, endPosition)); column += endPosition - startPosition; } switch (code2) { case codes.nul: { chunks.push(codes.replacementCharacter); column++; break; } case codes.ht: { next = Math.ceil(column / constants.tabSize) * constants.tabSize; chunks.push(codes.horizontalTab); while (column++ < next) chunks.push(codes.virtualSpace); break; } case codes.lf: { chunks.push(codes.lineFeed); column = 1; break; } default: { atCarriageReturn = true; column = 1; } } } startPosition = endPosition + 1; } if (end) { if (atCarriageReturn) chunks.push(codes.carriageReturn); if (buffer) chunks.push(buffer); chunks.push(codes.eof); } return chunks; } } // ../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/dev/lib/index.js var own2 = {}.hasOwnProperty; function fromMarkdown(value, encoding, options) { if (typeof encoding !== "string") { options = encoding; encoding = void 0; } return compiler(options)( postprocess( parse(options).document().write(preprocess()(value, encoding, true)) ) ); } function compiler(options) { const config = { transforms: [], canContainEols: ["emphasis", "fragment", "heading", "paragraph", "strong"], enter: { autolink: opener(link2), autolinkProtocol: onenterdata, autolinkEmail: onenterdata, atxHeading: opener(heading2), blockQuote: opener(blockQuote2), characterEscape: onenterdata, characterReference: onenterdata, codeFenced: opener(codeFlow), codeFencedFenceInfo: buffer, codeFencedFenceMeta: buffer, codeIndented: opener(codeFlow, buffer), codeText: opener(codeText2, buffer), codeTextData: onenterdata, data: onenterdata, codeFlowValue: onenterdata, definition: opener(definition2), definitionDestinationString: buffer, definitionLabelString: buffer, definitionTitleString: buffer, emphasis: opener(emphasis2), hardBreakEscape: opener(hardBreak2), hardBreakTrailing: opener(hardBreak2), htmlFlow: opener(html3, buffer), htmlFlowData: onenterdata, htmlText: opener(html3, buffer), htmlTextData: onenterdata, image: opener(image2), label: buffer, link: opener(link2), listItem: opener(listItem2), listItemValue: onenterlistitemvalue, listOrdered: opener(list3, onenterlistordered), listUnordered: opener(list3), paragraph: opener(paragraph2), reference: onenterreference, referenceString: buffer, resourceDestinationString: buffer, resourceTitleString: buffer, setextHeading: opener(heading2), strong: opener(strong2), thematicBreak: opener(thematicBreak3) }, exit: { atxHeading: closer(), atxHeadingSequence: onexitatxheadingsequence, autolink: closer(), autolinkEmail: onexitautolinkemail, autolinkProtocol: onexitautolinkprotocol, blockQuote: closer(), characterEscapeValue: onexitdata, characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, characterReferenceMarkerNumeric: onexitcharacterreferencemarker, characterReferenceValue: onexitcharacterreferencevalue, characterReference: onexitcharacterreference, codeFenced: closer(onexitcodefenced), codeFencedFence: onexitcodefencedfence, codeFencedFenceInfo: onexitcodefencedfenceinfo, codeFencedFenceMeta: onexitcodefencedfencemeta, codeFlowValue: onexitdata, codeIndented: closer(onexitcodeindented), codeText: closer(onexitcodetext), codeTextData: onexitdata, data: onexitdata, definition: closer(), definitionDestinationString: onexitdefinitiondestinationstring, definitionLabelString: onexitdefinitionlabelstring, definitionTitleString: onexitdefinitiontitlestring, emphasis: closer(), hardBreakEscape: closer(onexithardbreak), hardBreakTrailing: closer(onexithardbreak), htmlFlow: closer(onexithtmlflow), htmlFlowData: onexitdata, htmlText: closer(onexithtmltext), htmlTextData: onexitdata, image: closer(onexitimage), label: onexitlabel, labelText: onexitlabeltext, lineEnding: onexitlineending, link: closer(onexitlink), listItem: closer(), listOrdered: closer(), listUnordered: closer(), paragraph: closer(), referenceString: onexitreferencestring, resourceDestinationString: onexitresourcedestinationstring, resourceTitleString: onexitresourcetitlestring, resource: onexitresource, setextHeading: closer(onexitsetextheading), setextHeadingLineSequence: onexitsetextheadinglinesequence, setextHeadingText: onexitsetextheadingtext, strong: closer(), thematicBreak: closer() } }; configure(config, (options || {}).mdastExtensions || []); const data = {}; return compile2; function compile2(events) { let tree = { type: "root", children: [] }; const context = { stack: [tree], tokenStack: [], config, enter, exit, buffer, resume, data }; const listStack = []; let index2 = -1; while (++index2 < events.length) { if (events[index2][1].type === types.listOrdered || events[index2][1].type === types.listUnordered) { if (events[index2][0] === "enter") { listStack.push(index2); } else { const tail = listStack.pop(); ok(typeof tail === "number", "expected list ot be open"); index2 = prepareList(events, tail, index2); } } } index2 = -1; while (++index2 < events.length) { const handler = config[events[index2][0]]; if (own2.call(handler, events[index2][1].type)) { handler[events[index2][1].type].call( Object.assign( { sliceSerialize: events[index2][2].sliceSerialize }, context ), events[index2][1] ); } } if (context.tokenStack.length > 0) { const tail = context.tokenStack[context.tokenStack.length - 1]; const handler = tail[1] || defaultOnError; handler.call(context, void 0, tail[0]); } tree.position = { start: point2( events.length > 0 ? events[0][1].start : { line: 1, column: 1, offset: 0 } ), end: point2( events.length > 0 ? events[events.length - 2][1].end : { line: 1, column: 1, offset: 0 } ) }; index2 = -1; while (++index2 < config.transforms.length) { tree = config.transforms[index2](tree) || tree; } return tree; } function prepareList(events, start2, length) { let index2 = start2 - 1; let containerBalance = -1; let listSpread = false; let listItem3; let lineIndex; let firstBlankLineIndex; let atMarker; while (++index2 <= length) { const event = events[index2]; switch (event[1].type) { case types.listUnordered: case types.listOrdered: case types.blockQuote: { if (event[0] === "enter") { containerBalance++; } else { containerBalance--; } atMarker = void 0; break; } case types.lineEndingBlank: { if (event[0] === "enter") { if (listItem3 && !atMarker && !containerBalance && !firstBlankLineIndex) { firstBlankLineIndex = index2; } atMarker = void 0; } break; } case types.linePrefix: case types.listItemValue: case types.listItemMarker: case types.listItemPrefix: case types.listItemPrefixWhitespace: { break; } default: { atMarker = void 0; } } if (!containerBalance && event[0] === "enter" && event[1].type === types.listItemPrefix || containerBalance === -1 && event[0] === "exit" && (event[1].type === types.listUnordered || event[1].type === types.listOrdered)) { if (listItem3) { let tailIndex = index2; lineIndex = void 0; while (tailIndex--) { const tailEvent = events[tailIndex]; if (tailEvent[1].type === types.lineEnding || tailEvent[1].type === types.lineEndingBlank) { if (tailEvent[0] === "exit") continue; if (lineIndex) { events[lineIndex][1].type = types.lineEndingBlank; listSpread = true; } tailEvent[1].type = types.lineEnding; lineIndex = tailIndex; } else if (tailEvent[1].type === types.linePrefix || tailEvent[1].type === types.blockQuotePrefix || tailEvent[1].type === types.blockQuotePrefixWhitespace || tailEvent[1].type === types.blockQuoteMarker || tailEvent[1].type === types.listItemIndent) { } else { break; } } if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) { listItem3._spread = true; } listItem3.end = Object.assign( {}, lineIndex ? events[lineIndex][1].start : event[1].end ); events.splice(lineIndex || index2, 0, ["exit", listItem3, event[2]]); index2++; length++; } if (event[1].type === types.listItemPrefix) { const item = { type: "listItem", _spread: false, start: Object.assign({}, event[1].start), // @ts-expect-error: we’ll add `end` in a second. end: void 0 }; listItem3 = item; events.splice(index2, 0, ["enter", item, event[2]]); index2++; length++; firstBlankLineIndex = void 0; atMarker = true; } } } events[start2][1]._spread = listSpread; return length; } function opener(create, and) { return open; function open(token) { enter.call(this, create(token), token); if (and) and.call(this, token); } } function buffer() { this.stack.push({ type: "fragment", children: [] }); } function enter(node, token, errorHandler) { const parent = this.stack[this.stack.length - 1]; ok(parent, "expected `parent`"); ok("children" in parent, "expected `parent`"); const siblings = parent.children; siblings.push(node); this.stack.push(node); this.tokenStack.push([token, errorHandler || void 0]); node.position = { start: point2(token.start), // @ts-expect-error: `end` will be patched later. end: void 0 }; } function closer(and) { return close; function close(token) { if (and) and.call(this, token); exit.call(this, token); } } function exit(token, onExitError) { const node = this.stack.pop(); ok(node, "expected `node`"); const open = this.tokenStack.pop(); if (!open) { throw new Error( "Cannot close `" + token.type + "` (" + stringifyPosition({ start: token.start, end: token.end }) + "): it’s not open" ); } else if (open[0].type !== token.type) { if (onExitError) { onExitError.call(this, token, open[0]); } else { const handler = open[1] || defaultOnError; handler.call(this, token, open[0]); } } ok(node.type !== "fragment", "unexpected fragment `exit`ed"); ok(node.position, "expected `position` to be defined"); node.position.end = point2(token.end); } function resume() { return toString(this.stack.pop()); } function onenterlistordered() { this.data.expectingFirstListItemValue = true; } function onenterlistitemvalue(token) { if (this.data.expectingFirstListItemValue) { const ancestor = this.stack[this.stack.length - 2]; ok(ancestor, "expected nodes on stack"); ok(ancestor.type === "list", "expected list on stack"); ancestor.start = Number.parseInt( this.sliceSerialize(token), constants.numericBaseDecimal ); this.data.expectingFirstListItemValue = void 0; } } function onexitcodefencedfenceinfo() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "code", "expected code on stack"); node.lang = data2; } function onexitcodefencedfencemeta() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "code", "expected code on stack"); node.meta = data2; } function onexitcodefencedfence() { if (this.data.flowCodeInside) return; this.buffer(); this.data.flowCodeInside = true; } function onexitcodefenced() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "code", "expected code on stack"); node.value = data2.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""); this.data.flowCodeInside = void 0; } function onexitcodeindented() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "code", "expected code on stack"); node.value = data2.replace(/(\r?\n|\r)$/g, ""); } function onexitdefinitionlabelstring(token) { const label = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "definition", "expected definition on stack"); node.label = label; node.identifier = normalizeIdentifier( this.sliceSerialize(token) ).toLowerCase(); } function onexitdefinitiontitlestring() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "definition", "expected definition on stack"); node.title = data2; } function onexitdefinitiondestinationstring() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "definition", "expected definition on stack"); node.url = data2; } function onexitatxheadingsequence(token) { const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "heading", "expected heading on stack"); if (!node.depth) { const depth = this.sliceSerialize(token).length; ok( depth === 1 || depth === 2 || depth === 3 || depth === 4 || depth === 5 || depth === 6, "expected `depth` between `1` and `6`" ); node.depth = depth; } } function onexitsetextheadingtext() { this.data.setextHeadingSlurpLineEnding = true; } function onexitsetextheadinglinesequence(token) { const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "heading", "expected heading on stack"); node.depth = this.sliceSerialize(token).codePointAt(0) === codes.equalsTo ? 1 : 2; } function onexitsetextheading() { this.data.setextHeadingSlurpLineEnding = void 0; } function onenterdata(token) { const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok("children" in node, "expected parent on stack"); const siblings = node.children; let tail = siblings[siblings.length - 1]; if (!tail || tail.type !== "text") { tail = text5(); tail.position = { start: point2(token.start), // @ts-expect-error: we’ll add `end` later. end: void 0 }; siblings.push(tail); } this.stack.push(tail); } function onexitdata(token) { const tail = this.stack.pop(); ok(tail, "expected a `node` to be on the stack"); ok("value" in tail, "expected a `literal` to be on the stack"); ok(tail.position, "expected `node` to have an open position"); tail.value += this.sliceSerialize(token); tail.position.end = point2(token.end); } function onexitlineending(token) { const context = this.stack[this.stack.length - 1]; ok(context, "expected `node`"); if (this.data.atHardBreak) { ok("children" in context, "expected `parent`"); const tail = context.children[context.children.length - 1]; ok(tail.position, "expected tail to have a starting position"); tail.position.end = point2(token.end); this.data.atHardBreak = void 0; return; } if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) { onenterdata.call(this, token); onexitdata.call(this, token); } } function onexithardbreak() { this.data.atHardBreak = true; } function onexithtmlflow() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "html", "expected html on stack"); node.value = data2; } function onexithtmltext() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "html", "expected html on stack"); node.value = data2; } function onexitcodetext() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "inlineCode", "expected inline code on stack"); node.value = data2; } function onexitlink() { const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "link", "expected link on stack"); if (this.data.inReference) { const referenceType = this.data.referenceType || "shortcut"; node.type += "Reference"; node.referenceType = referenceType; delete node.url; delete node.title; } else { delete node.identifier; delete node.label; } this.data.referenceType = void 0; } function onexitimage() { const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "image", "expected image on stack"); if (this.data.inReference) { const referenceType = this.data.referenceType || "shortcut"; node.type += "Reference"; node.referenceType = referenceType; delete node.url; delete node.title; } else { delete node.identifier; delete node.label; } this.data.referenceType = void 0; } function onexitlabeltext(token) { const string3 = this.sliceSerialize(token); const ancestor = this.stack[this.stack.length - 2]; ok(ancestor, "expected ancestor on stack"); ok( ancestor.type === "image" || ancestor.type === "link", "expected image or link on stack" ); ancestor.label = decodeString(string3); ancestor.identifier = normalizeIdentifier(string3).toLowerCase(); } function onexitlabel() { const fragment = this.stack[this.stack.length - 1]; ok(fragment, "expected node on stack"); ok(fragment.type === "fragment", "expected fragment on stack"); const value = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok( node.type === "image" || node.type === "link", "expected image or link on stack" ); this.data.inReference = true; if (node.type === "link") { const children = fragment.children; node.children = children; } else { node.alt = value; } } function onexitresourcedestinationstring() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok( node.type === "image" || node.type === "link", "expected image or link on stack" ); node.url = data2; } function onexitresourcetitlestring() { const data2 = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok( node.type === "image" || node.type === "link", "expected image or link on stack" ); node.title = data2; } function onexitresource() { this.data.inReference = void 0; } function onenterreference() { this.data.referenceType = "collapsed"; } function onexitreferencestring(token) { const label = this.resume(); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok( node.type === "image" || node.type === "link", "expected image reference or link reference on stack" ); node.label = label; node.identifier = normalizeIdentifier( this.sliceSerialize(token) ).toLowerCase(); this.data.referenceType = "full"; } function onexitcharacterreferencemarker(token) { ok( token.type === "characterReferenceMarkerNumeric" || token.type === "characterReferenceMarkerHexadecimal" ); this.data.characterReferenceType = token.type; } function onexitcharacterreferencevalue(token) { const data2 = this.sliceSerialize(token); const type = this.data.characterReferenceType; let value; if (type) { value = decodeNumericCharacterReference( data2, type === types.characterReferenceMarkerNumeric ? constants.numericBaseDecimal : constants.numericBaseHexadecimal ); this.data.characterReferenceType = void 0; } else { const result = decodeNamedCharacterReference(data2); ok(result !== false, "expected reference to decode"); value = result; } const tail = this.stack[this.stack.length - 1]; ok(tail, "expected `node`"); ok("value" in tail, "expected `node.value`"); tail.value += value; } function onexitcharacterreference(token) { const tail = this.stack.pop(); ok(tail, "expected `node`"); ok(tail.position, "expected `node.position`"); tail.position.end = point2(token.end); } function onexitautolinkprotocol(token) { onexitdata.call(this, token); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "link", "expected link on stack"); node.url = this.sliceSerialize(token); } function onexitautolinkemail(token) { onexitdata.call(this, token); const node = this.stack[this.stack.length - 1]; ok(node, "expected node on stack"); ok(node.type === "link", "expected link on stack"); node.url = "mailto:" + this.sliceSerialize(token); } function blockQuote2() { return { type: "blockquote", children: [] }; } function codeFlow() { return { type: "code", lang: null, meta: null, value: "" }; } function codeText2() { return { type: "inlineCode", value: "" }; } function definition2() { return { type: "definition", identifier: "", label: null, title: null, url: "" }; } function emphasis2() { return { type: "emphasis", children: [] }; } function heading2() { return { type: "heading", // @ts-expect-error `depth` will be set later. depth: 0, children: [] }; } function hardBreak2() { return { type: "break" }; } function html3() { return { type: "html", value: "" }; } function image2() { return { type: "image", title: null, url: "", alt: null }; } function link2() { return { type: "link", title: null, url: "", children: [] }; } function list3(token) { return { type: "list", ordered: token.type === "listOrdered", start: null, spread: token._spread, children: [] }; } function listItem2(token) { return { type: "listItem", spread: token._spread, checked: null, children: [] }; } function paragraph2() { return { type: "paragraph", children: [] }; } function strong2() { return { type: "strong", children: [] }; } function text5() { return { type: "text", value: "" }; } function thematicBreak3() { return { type: "thematicBreak" }; } } function point2(d) { return { line: d.line, column: d.column, offset: d.offset }; } function configure(combined, extensions) { let index2 = -1; while (++index2 < extensions.length) { const value = extensions[index2]; if (Array.isArray(value)) { configure(combined, value); } else { extension(combined, value); } } } function extension(combined, extension2) { let key; for (key in extension2) { if (own2.call(extension2, key)) { switch (key) { case "canContainEols": { const right = extension2[key]; if (right) { combined[key].push(...right); } break; } case "transforms": { const right = extension2[key]; if (right) { combined[key].push(...right); } break; } case "enter": case "exit": { const right = extension2[key]; if (right) { Object.assign(combined[key], right); } break; } } } } } function defaultOnError(left, right) { if (left) { throw new Error( "Cannot close `" + left.type + "` (" + stringifyPosition({ start: left.start, end: left.end }) + "): a different token (`" + right.type + "`, " + stringifyPosition({ start: right.start, end: right.end }) + ") is open" ); } else { throw new Error( "Cannot close document, a token (`" + right.type + "`, " + stringifyPosition({ start: right.start, end: right.end }) + ") is still open" ); } } // ../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js function remarkParse(options) { const self = this; self.parser = parser; function parser(doc) { return fromMarkdown(doc, { ...self.data("settings"), ...options, // Note: these options are not in the readme. // The goal is for them to be set by plugins on `data` instead of being // passed by users. extensions: self.data("micromarkExtensions") || [], mdastExtensions: self.data("fromMarkdownExtensions") || [] }); } } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/blockquote.js function blockquote(state, node) { const result = { type: "element", tagName: "blockquote", properties: {}, children: state.wrap(state.all(node), true) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/break.js function hardBreak(state, node) { const result = { type: "element", tagName: "br", properties: {}, children: [] }; state.patch(node, result); return [state.applyData(node, result), { type: "text", value: "\n" }]; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/code.js function code(state, node) { const value = node.value ? node.value + "\n" : ""; const properties = {}; const language = node.lang ? node.lang.split(/\s+/) : []; if (language.length > 0) { properties.className = ["language-" + language[0]]; } let result = { type: "element", tagName: "code", properties, children: [{ type: "text", value }] }; if (node.meta) { result.data = { meta: node.meta }; } state.patch(node, result); result = state.applyData(node, result); result = { type: "element", tagName: "pre", properties: {}, children: [result] }; state.patch(node, result); return result; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/delete.js function strikethrough(state, node) { const result = { type: "element", tagName: "del", properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/emphasis.js function emphasis(state, node) { const result = { type: "element", tagName: "em", properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js function footnoteReference(state, node) { const clobberPrefix = typeof state.options.clobberPrefix === "string" ? state.options.clobberPrefix : "user-content-"; const id = String(node.identifier).toUpperCase(); const safeId = normalizeUri(id.toLowerCase()); const index2 = state.footnoteOrder.indexOf(id); let counter; let reuseCounter = state.footnoteCounts.get(id); if (reuseCounter === void 0) { reuseCounter = 0; state.footnoteOrder.push(id); counter = state.footnoteOrder.length; } else { counter = index2 + 1; } reuseCounter += 1; state.footnoteCounts.set(id, reuseCounter); const link2 = { type: "element", tagName: "a", properties: { href: "#" + clobberPrefix + "fn-" + safeId, id: clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""), dataFootnoteRef: true, ariaDescribedBy: ["footnote-label"] }, children: [{ type: "text", value: String(counter) }] }; state.patch(node, link2); const sup = { type: "element", tagName: "sup", properties: {}, children: [link2] }; state.patch(node, sup); return state.applyData(node, sup); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/heading.js function heading(state, node) { const result = { type: "element", tagName: "h" + node.depth, properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/html.js function html2(state, node) { if (state.options.allowDangerousHtml) { const result = { type: "raw", value: node.value }; state.patch(node, result); return state.applyData(node, result); } return void 0; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/revert.js function revert(state, node) { const subtype = node.referenceType; let suffix = "]"; if (subtype === "collapsed") { suffix += "[]"; } else if (subtype === "full") { suffix += "[" + (node.label || node.identifier) + "]"; } if (node.type === "imageReference") { return [{ type: "text", value: "![" + node.alt + suffix }]; } const contents = state.all(node); const head = contents[0]; if (head && head.type === "text") { head.value = "[" + head.value; } else { contents.unshift({ type: "text", value: "[" }); } const tail = contents[contents.length - 1]; if (tail && tail.type === "text") { tail.value += suffix; } else { contents.push({ type: "text", value: suffix }); } return contents; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/image-reference.js function imageReference(state, node) { const id = String(node.identifier).toUpperCase(); const definition2 = state.definitionById.get(id); if (!definition2) { return revert(state, node); } const properties = { src: normalizeUri(definition2.url || ""), alt: node.alt }; if (definition2.title !== null && definition2.title !== void 0) { properties.title = definition2.title; } const result = { type: "element", tagName: "img", properties, children: [] }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/image.js function image(state, node) { const properties = { src: normalizeUri(node.url) }; if (node.alt !== null && node.alt !== void 0) { properties.alt = node.alt; } if (node.title !== null && node.title !== void 0) { properties.title = node.title; } const result = { type: "element", tagName: "img", properties, children: [] }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/inline-code.js function inlineCode(state, node) { const text5 = { type: "text", value: node.value.replace(/\r?\n|\r/g, " ") }; state.patch(node, text5); const result = { type: "element", tagName: "code", properties: {}, children: [text5] }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/link-reference.js function linkReference(state, node) { const id = String(node.identifier).toUpperCase(); const definition2 = state.definitionById.get(id); if (!definition2) { return revert(state, node); } const properties = { href: normalizeUri(definition2.url || "") }; if (definition2.title !== null && definition2.title !== void 0) { properties.title = definition2.title; } const result = { type: "element", tagName: "a", properties, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/link.js function link(state, node) { const properties = { href: normalizeUri(node.url) }; if (node.title !== null && node.title !== void 0) { properties.title = node.title; } const result = { type: "element", tagName: "a", properties, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/list-item.js function listItem(state, node, parent) { const results = state.all(node); const loose = parent ? listLoose(parent) : listItemLoose(node); const properties = {}; const children = []; if (typeof node.checked === "boolean") { const head = results[0]; let paragraph2; if (head && head.type === "element" && head.tagName === "p") { paragraph2 = head; } else { paragraph2 = { type: "element", tagName: "p", properties: {}, children: [] }; results.unshift(paragraph2); } if (paragraph2.children.length > 0) { paragraph2.children.unshift({ type: "text", value: " " }); } paragraph2.children.unshift({ type: "element", tagName: "input", properties: { type: "checkbox", checked: node.checked, disabled: true }, children: [] }); properties.className = ["task-list-item"]; } let index2 = -1; while (++index2 < results.length) { const child = results[index2]; if (loose || index2 !== 0 || child.type !== "element" || child.tagName !== "p") { children.push({ type: "text", value: "\n" }); } if (child.type === "element" && child.tagName === "p" && !loose) { children.push(...child.children); } else { children.push(child); } } const tail = results[results.length - 1]; if (tail && (loose || tail.type !== "element" || tail.tagName !== "p")) { children.push({ type: "text", value: "\n" }); } const result = { type: "element", tagName: "li", properties, children }; state.patch(node, result); return state.applyData(node, result); } function listLoose(node) { let loose = false; if (node.type === "list") { loose = node.spread || false; const children = node.children; let index2 = -1; while (!loose && ++index2 < children.length) { loose = listItemLoose(children[index2]); } } return loose; } function listItemLoose(node) { const spread = node.spread; return spread === null || spread === void 0 ? node.children.length > 1 : spread; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/list.js function list2(state, node) { const properties = {}; const results = state.all(node); let index2 = -1; if (typeof node.start === "number" && node.start !== 1) { properties.start = node.start; } while (++index2 < results.length) { const child = results[index2]; if (child.type === "element" && child.tagName === "li" && child.properties && Array.isArray(child.properties.className) && child.properties.className.includes("task-list-item")) { properties.className = ["contains-task-list"]; break; } } const result = { type: "element", tagName: node.ordered ? "ol" : "ul", properties, children: state.wrap(results, true) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/paragraph.js function paragraph(state, node) { const result = { type: "element", tagName: "p", properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/root.js function root2(state, node) { const result = { type: "root", children: state.wrap(state.all(node)) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/strong.js function strong(state, node) { const result = { type: "element", tagName: "strong", properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table.js function table(state, node) { const rows = state.all(node); const firstRow = rows.shift(); const tableContent = []; if (firstRow) { const head = { type: "element", tagName: "thead", properties: {}, children: state.wrap([firstRow], true) }; state.patch(node.children[0], head); tableContent.push(head); } if (rows.length > 0) { const body = { type: "element", tagName: "tbody", properties: {}, children: state.wrap(rows, true) }; const start2 = pointStart(node.children[1]); const end = pointEnd(node.children[node.children.length - 1]); if (start2 && end) body.position = { start: start2, end }; tableContent.push(body); } const result = { type: "element", tagName: "table", properties: {}, children: state.wrap(tableContent, true) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table-row.js function tableRow(state, node, parent) { const siblings = parent ? parent.children : void 0; const rowIndex = siblings ? siblings.indexOf(node) : 1; const tagName = rowIndex === 0 ? "th" : "td"; const align = parent && parent.type === "table" ? parent.align : void 0; const length = align ? align.length : node.children.length; let cellIndex = -1; const cells = []; while (++cellIndex < length) { const cell = node.children[cellIndex]; const properties = {}; const alignValue = align ? align[cellIndex] : void 0; if (alignValue) { properties.align = alignValue; } let result2 = { type: "element", tagName, properties, children: [] }; if (cell) { result2.children = state.all(cell); state.patch(cell, result2); result2 = state.applyData(cell, result2); } cells.push(result2); } const result = { type: "element", tagName: "tr", properties: {}, children: state.wrap(cells, true) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table-cell.js function tableCell(state, node) { const result = { type: "element", tagName: "td", // Assume body cell. properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/trim-lines@3.0.1/node_modules/trim-lines/index.js var tab = 9; var space = 32; function trimLines(value) { const source = String(value); const search2 = /\r?\n|\r/g; let match = search2.exec(source); let last = 0; const lines = []; while (match) { lines.push( trimLine(source.slice(last, match.index), last > 0, true), match[0] ); last = match.index + match[0].length; match = search2.exec(source); } lines.push(trimLine(source.slice(last), last > 0, false)); return lines.join(""); } function trimLine(value, start2, end) { let startIndex = 0; let endIndex = value.length; if (start2) { let code2 = value.codePointAt(startIndex); while (code2 === tab || code2 === space) { startIndex++; code2 = value.codePointAt(startIndex); } } if (end) { let code2 = value.codePointAt(endIndex - 1); while (code2 === tab || code2 === space) { endIndex--; code2 = value.codePointAt(endIndex - 1); } } return endIndex > startIndex ? value.slice(startIndex, endIndex) : ""; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/text.js function text4(state, node) { const result = { type: "text", value: trimLines(String(node.value)) }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js function thematicBreak2(state, node) { const result = { type: "element", tagName: "hr", properties: {}, children: [] }; state.patch(node, result); return state.applyData(node, result); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/index.js var handlers = { blockquote, break: hardBreak, code, delete: strikethrough, emphasis, footnoteReference, heading, html: html2, imageReference, image, inlineCode, linkReference, link, listItem, list: list2, paragraph, // @ts-expect-error: root is different, but hard to type. root: root2, strong, table, tableCell, tableRow, text: text4, thematicBreak: thematicBreak2, toml: ignore, yaml: ignore, definition: ignore, footnoteDefinition: ignore }; function ignore() { return void 0; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/footer.js function defaultFootnoteBackContent(_, rereferenceIndex) { const result = [{ type: "text", value: "↩" }]; if (rereferenceIndex > 1) { result.push({ type: "element", tagName: "sup", properties: {}, children: [{ type: "text", value: String(rereferenceIndex) }] }); } return result; } function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) { return "Back to reference " + (referenceIndex + 1) + (rereferenceIndex > 1 ? "-" + rereferenceIndex : ""); } function footer(state) { const clobberPrefix = typeof state.options.clobberPrefix === "string" ? state.options.clobberPrefix : "user-content-"; const footnoteBackContent = state.options.footnoteBackContent || defaultFootnoteBackContent; const footnoteBackLabel = state.options.footnoteBackLabel || defaultFootnoteBackLabel; const footnoteLabel = state.options.footnoteLabel || "Footnotes"; const footnoteLabelTagName = state.options.footnoteLabelTagName || "h2"; const footnoteLabelProperties = state.options.footnoteLabelProperties || { className: ["sr-only"] }; const listItems = []; let referenceIndex = -1; while (++referenceIndex < state.footnoteOrder.length) { const definition2 = state.footnoteById.get( state.footnoteOrder[referenceIndex] ); if (!definition2) { continue; } const content3 = state.all(definition2); const id = String(definition2.identifier).toUpperCase(); const safeId = normalizeUri(id.toLowerCase()); let rereferenceIndex = 0; const backReferences = []; const counts = state.footnoteCounts.get(id); while (counts !== void 0 && ++rereferenceIndex <= counts) { if (backReferences.length > 0) { backReferences.push({ type: "text", value: " " }); } let children = typeof footnoteBackContent === "string" ? footnoteBackContent : footnoteBackContent(referenceIndex, rereferenceIndex); if (typeof children === "string") { children = { type: "text", value: children }; } backReferences.push({ type: "element", tagName: "a", properties: { href: "#" + clobberPrefix + "fnref-" + safeId + (rereferenceIndex > 1 ? "-" + rereferenceIndex : ""), dataFootnoteBackref: "", ariaLabel: typeof footnoteBackLabel === "string" ? footnoteBackLabel : footnoteBackLabel(referenceIndex, rereferenceIndex), className: ["data-footnote-backref"] }, children: Array.isArray(children) ? children : [children] }); } const tail = content3[content3.length - 1]; if (tail && tail.type === "element" && tail.tagName === "p") { const tailTail = tail.children[tail.children.length - 1]; if (tailTail && tailTail.type === "text") { tailTail.value += " "; } else { tail.children.push({ type: "text", value: " " }); } tail.children.push(...backReferences); } else { content3.push(...backReferences); } const listItem2 = { type: "element", tagName: "li", properties: { id: clobberPrefix + "fn-" + safeId }, children: state.wrap(content3, true) }; state.patch(definition2, listItem2); listItems.push(listItem2); } if (listItems.length === 0) { return; } return { type: "element", tagName: "section", properties: { dataFootnotes: true, className: ["footnotes"] }, children: [ { type: "element", tagName: footnoteLabelTagName, properties: { ...esm_default(footnoteLabelProperties), id: "footnote-label" }, children: [{ type: "text", value: footnoteLabel }] }, { type: "text", value: "\n" }, { type: "element", tagName: "ol", properties: {}, children: state.wrap(listItems, true) }, { type: "text", value: "\n" } ] }; } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/state.js var own3 = {}.hasOwnProperty; var emptyOptions2 = {}; function createState(tree, options) { const settings = options || emptyOptions2; const definitionById = /* @__PURE__ */ new Map(); const footnoteById = /* @__PURE__ */ new Map(); const footnoteCounts = /* @__PURE__ */ new Map(); const handlers2 = { ...handlers, ...settings.handlers }; const state = { all, applyData, definitionById, footnoteById, footnoteCounts, footnoteOrder: [], handlers: handlers2, one: one2, options: settings, patch, wrap }; visit(tree, function(node) { if (node.type === "definition" || node.type === "footnoteDefinition") { const map = node.type === "definition" ? definitionById : footnoteById; const id = String(node.identifier).toUpperCase(); if (!map.has(id)) { map.set(id, node); } } }); return state; function one2(node, parent) { const type = node.type; const handle = state.handlers[type]; if (own3.call(state.handlers, type) && handle) { return handle(state, node, parent); } if (state.options.passThrough && state.options.passThrough.includes(type)) { if ("children" in node) { const { children, ...shallow } = node; const result = esm_default(shallow); result.children = state.all(node); return result; } return esm_default(node); } const unknown = state.options.unknownHandler || defaultUnknownHandler; return unknown(state, node, parent); } function all(parent) { const values2 = []; if ("children" in parent) { const nodes = parent.children; let index2 = -1; while (++index2 < nodes.length) { const result = state.one(nodes[index2], parent); if (result) { if (index2 && nodes[index2 - 1].type === "break") { if (!Array.isArray(result) && result.type === "text") { result.value = trimMarkdownSpaceStart(result.value); } if (!Array.isArray(result) && result.type === "element") { const head = result.children[0]; if (head && head.type === "text") { head.value = trimMarkdownSpaceStart(head.value); } } } if (Array.isArray(result)) { values2.push(...result); } else { values2.push(result); } } } } return values2; } } function patch(from, to) { if (from.position) to.position = position(from); } function applyData(from, to) { let result = to; if (from && from.data) { const hName = from.data.hName; const hChildren = from.data.hChildren; const hProperties = from.data.hProperties; if (typeof hName === "string") { if (result.type === "element") { result.tagName = hName; } else { const children = "children" in result ? result.children : [result]; result = { type: "element", tagName: hName, properties: {}, children }; } } if (result.type === "element" && hProperties) { Object.assign(result.properties, esm_default(hProperties)); } if ("children" in result && result.children && hChildren !== null && hChildren !== void 0) { result.children = hChildren; } } return result; } function defaultUnknownHandler(state, node) { const data = node.data || {}; const result = "value" in node && !(own3.call(data, "hProperties") || own3.call(data, "hChildren")) ? { type: "text", value: node.value } : { type: "element", tagName: "div", properties: {}, children: state.all(node) }; state.patch(node, result); return state.applyData(node, result); } function wrap(nodes, loose) { const result = []; let index2 = -1; if (loose) { result.push({ type: "text", value: "\n" }); } while (++index2 < nodes.length) { if (index2) result.push({ type: "text", value: "\n" }); result.push(nodes[index2]); } if (loose && nodes.length > 0) { result.push({ type: "text", value: "\n" }); } return result; } function trimMarkdownSpaceStart(value) { let index2 = 0; let code2 = value.charCodeAt(index2); while (code2 === 9 || code2 === 32) { index2++; code2 = value.charCodeAt(index2); } return value.slice(index2); } // ../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/index.js function toHast(tree, options) { const state = createState(tree, options); const node = state.one(tree, void 0); const foot = footer(state); const result = Array.isArray(node) ? { type: "root", children: node } : node || { type: "root", children: [] }; if (foot) { ok("children" in result); result.children.push({ type: "text", value: "\n" }, foot); } return result; } // ../../node_modules/.pnpm/remark-rehype@11.1.2/node_modules/remark-rehype/lib/index.js function remarkRehype(destination, options) { if (destination && "run" in destination) { return async function(tree, file) { const hastTree = ( /** @type {HastRoot} */ toHast(tree, { file, ...options }) ); await destination.run(hastTree, file); }; } return function(tree, file) { return ( /** @type {HastRoot} */ toHast(tree, { file, ...destination || options }) ); }; } // ../../node_modules/.pnpm/bail@2.0.2/node_modules/bail/index.js function bail(error) { if (error) { throw error; } } // ../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js var import_extend = __toESM(require_extend(), 1); // ../../node_modules/.pnpm/is-plain-obj@4.1.0/node_modules/is-plain-obj/index.js function isPlainObject(value) { if (typeof value !== "object" || value === null) { return false; } const prototype = Object.getPrototypeOf(value); return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); } // ../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/lib/index.js function trough() { const fns = []; const pipeline = { run, use }; return pipeline; function run(...values2) { let middlewareIndex = -1; const callback = values2.pop(); if (typeof callback !== "function") { throw new TypeError("Expected function as last argument, not " + callback); } next(null, ...values2); function next(error, ...output) { const fn = fns[++middlewareIndex]; let index2 = -1; if (error) { callback(error); return; } while (++index2 < values2.length) { if (output[index2] === null || output[index2] === void 0) { output[index2] = values2[index2]; } } values2 = output; if (fn) { wrap2(fn, next)(...output); } else { callback(null, ...output); } } } function use(middelware) { if (typeof middelware !== "function") { throw new TypeError( "Expected `middelware` to be a function, not " + middelware ); } fns.push(middelware); return pipeline; } } function wrap2(middleware, callback) { let called; return wrapped; function wrapped(...parameters) { const fnExpectsCallback = middleware.length > parameters.length; let result; if (fnExpectsCallback) { parameters.push(done); } try { result = middleware.apply(this, parameters); } catch (error) { const exception = ( /** @type {Error} */ error ); if (fnExpectsCallback && called) { throw exception; } return done(exception); } if (!fnExpectsCallback) { if (result && result.then && typeof result.then === "function") { result.then(then, done); } else if (result instanceof Error) { done(result); } else { then(result); } } } function done(error, ...output) { if (!called) { called = true; callback(error, ...output); } } function then(value) { done(null, value); } } // ../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minpath.browser.js var minpath = { basename, dirname, extname, join, sep: "/" }; function basename(path, extname2) { if (extname2 !== void 0 && typeof extname2 !== "string") { throw new TypeError('"ext" argument must be a string'); } assertPath(path); let start2 = 0; let end = -1; let index2 = path.length; let seenNonSlash; if (extname2 === void 0 || extname2.length === 0 || extname2.length > path.length) { while (index2--) { if (path.codePointAt(index2) === 47) { if (seenNonSlash) { start2 = index2 + 1; break; } } else if (end < 0) { seenNonSlash = true; end = index2 + 1; } } return end < 0 ? "" : path.slice(start2, end); } if (extname2 === path) { return ""; } let firstNonSlashEnd = -1; let extnameIndex = extname2.length - 1; while (index2--) { if (path.codePointAt(index2) === 47) { if (seenNonSlash) { start2 = index2 + 1; break; } } else { if (firstNonSlashEnd < 0) { seenNonSlash = true; firstNonSlashEnd = index2 + 1; } if (extnameIndex > -1) { if (path.codePointAt(index2) === extname2.codePointAt(extnameIndex--)) { if (extnameIndex < 0) { end = index2; } } else { extnameIndex = -1; end = firstNonSlashEnd; } } } } if (start2 === end) { end = firstNonSlashEnd; } else if (end < 0) { end = path.length; } return path.slice(start2, end); } function dirname(path) { assertPath(path); if (path.length === 0) { return "."; } let end = -1; let index2 = path.length; let unmatchedSlash; while (--index2) { if (path.codePointAt(index2) === 47) { if (unmatchedSlash) { end = index2; break; } } else if (!unmatchedSlash) { unmatchedSlash = true; } } return end < 0 ? path.codePointAt(0) === 47 ? "/" : "." : end === 1 && path.codePointAt(0) === 47 ? "//" : path.slice(0, end); } function extname(path) { assertPath(path); let index2 = path.length; let end = -1; let startPart = 0; let startDot = -1; let preDotState = 0; let unmatchedSlash; while (index2--) { const code2 = path.codePointAt(index2); if (code2 === 47) { if (unmatchedSlash) { startPart = index2 + 1; break; } continue; } if (end < 0) { unmatchedSlash = true; end = index2 + 1; } if (code2 === 46) { if (startDot < 0) { startDot = index2; } else if (preDotState !== 1) { preDotState = 1; } } else if (startDot > -1) { preDotState = -1; } } if (startDot < 0 || end < 0 || // We saw a non-dot character immediately before the dot. preDotState === 0 || // The (right-most) trimmed path component is exactly `..`. preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { return ""; } return path.slice(startDot, end); } function join(...segments) { let index2 = -1; let joined; while (++index2 < segments.length) { assertPath(segments[index2]); if (segments[index2]) { joined = joined === void 0 ? segments[index2] : joined + "/" + segments[index2]; } } return joined === void 0 ? "." : normalize(joined); } function normalize(path) { assertPath(path); const absolute = path.codePointAt(0) === 47; let value = normalizeString(path, !absolute); if (value.length === 0 && !absolute) { value = "."; } if (value.length > 0 && path.codePointAt(path.length - 1) === 47) { value += "/"; } return absolute ? "/" + value : value; } function normalizeString(path, allowAboveRoot) { let result = ""; let lastSegmentLength = 0; let lastSlash = -1; let dots = 0; let index2 = -1; let code2; let lastSlashIndex; while (++index2 <= path.length) { if (index2 < path.length) { code2 = path.codePointAt(index2); } else if (code2 === 47) { break; } else { code2 = 47; } if (code2 === 47) { if (lastSlash === index2 - 1 || dots === 1) { } else if (lastSlash !== index2 - 1 && dots === 2) { if (result.length < 2 || lastSegmentLength !== 2 || result.codePointAt(result.length - 1) !== 46 || result.codePointAt(result.length - 2) !== 46) { if (result.length > 2) { lastSlashIndex = result.lastIndexOf("/"); if (lastSlashIndex !== result.length - 1) { if (lastSlashIndex < 0) { result = ""; lastSegmentLength = 0; } else { result = result.slice(0, lastSlashIndex); lastSegmentLength = result.length - 1 - result.lastIndexOf("/"); } lastSlash = index2; dots = 0; continue; } } else if (result.length > 0) { result = ""; lastSegmentLength = 0; lastSlash = index2; dots = 0; continue; } } if (allowAboveRoot) { result = result.length > 0 ? result + "/.." : ".."; lastSegmentLength = 2; } } else { if (result.length > 0) { result += "/" + path.slice(lastSlash + 1, index2); } else { result = path.slice(lastSlash + 1, index2); } lastSegmentLength = index2 - lastSlash - 1; } lastSlash = index2; dots = 0; } else if (code2 === 46 && dots > -1) { dots++; } else { dots = -1; } } return result; } function assertPath(path) { if (typeof path !== "string") { throw new TypeError( "Path must be a string. Received " + JSON.stringify(path) ); } } // ../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minproc.browser.js var minproc = { cwd }; function cwd() { return "/"; } // ../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minurl.shared.js function isUrl(fileUrlOrPath) { return Boolean( fileUrlOrPath !== null && typeof fileUrlOrPath === "object" && "href" in fileUrlOrPath && fileUrlOrPath.href && "protocol" in fileUrlOrPath && fileUrlOrPath.protocol && // @ts-expect-error: indexing is fine. fileUrlOrPath.auth === void 0 ); } // ../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minurl.browser.js function urlToPath(path) { if (typeof path === "string") { path = new URL(path); } else if (!isUrl(path)) { const error = new TypeError( 'The "path" argument must be of type string or an instance of URL. Received `' + path + "`" ); error.code = "ERR_INVALID_ARG_TYPE"; throw error; } if (path.protocol !== "file:") { const error = new TypeError("The URL must be of scheme file"); error.code = "ERR_INVALID_URL_SCHEME"; throw error; } return getPathFromURLPosix(path); } function getPathFromURLPosix(url) { if (url.hostname !== "") { const error = new TypeError( 'File URL host must be "localhost" or empty on darwin' ); error.code = "ERR_INVALID_FILE_URL_HOST"; throw error; } const pathname = url.pathname; let index2 = -1; while (++index2 < pathname.length) { if (pathname.codePointAt(index2) === 37 && pathname.codePointAt(index2 + 1) === 50) { const third = pathname.codePointAt(index2 + 2); if (third === 70 || third === 102) { const error = new TypeError( "File URL path must not include encoded / characters" ); error.code = "ERR_INVALID_FILE_URL_PATH"; throw error; } } } return decodeURIComponent(pathname); } // ../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/index.js var order = ( /** @type {const} */ [ "history", "path", "basename", "stem", "extname", "dirname" ] ); var VFile = class { /** * Create a new virtual file. * * `options` is treated as: * * * `string` or `Uint8Array` — `{value: options}` * * `URL` — `{path: options}` * * `VFile` — shallow copies its data over to the new file * * `object` — all fields are shallow copied over to the new file * * Path related fields are set in the following order (least specific to * most specific): `history`, `path`, `basename`, `stem`, `extname`, * `dirname`. * * You cannot set `dirname` or `extname` without setting either `history`, * `path`, `basename`, or `stem` too. * * @param {Compatible | null | undefined} [value] * File value. * @returns * New instance. */ constructor(value) { let options; if (!value) { options = {}; } else if (isUrl(value)) { options = { path: value }; } else if (typeof value === "string" || isUint8Array(value)) { options = { value }; } else { options = value; } this.cwd = "cwd" in options ? "" : minproc.cwd(); this.data = {}; this.history = []; this.messages = []; this.value; this.map; this.result; this.stored; let index2 = -1; while (++index2 < order.length) { const field2 = order[index2]; if (field2 in options && options[field2] !== void 0 && options[field2] !== null) { this[field2] = field2 === "history" ? [...options[field2]] : options[field2]; } } let field; for (field in options) { if (!order.includes(field)) { this[field] = options[field]; } } } /** * Get the basename (including extname) (example: `'index.min.js'`). * * @returns {string | undefined} * Basename. */ get basename() { return typeof this.path === "string" ? minpath.basename(this.path) : void 0; } /** * Set basename (including extname) (`'index.min.js'`). * * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` * on windows). * Cannot be nullified (use `file.path = file.dirname` instead). * * @param {string} basename * Basename. * @returns {undefined} * Nothing. */ set basename(basename2) { assertNonEmpty(basename2, "basename"); assertPart(basename2, "basename"); this.path = minpath.join(this.dirname || "", basename2); } /** * Get the parent path (example: `'~'`). * * @returns {string | undefined} * Dirname. */ get dirname() { return typeof this.path === "string" ? minpath.dirname(this.path) : void 0; } /** * Set the parent path (example: `'~'`). * * Cannot be set if there’s no `path` yet. * * @param {string | undefined} dirname * Dirname. * @returns {undefined} * Nothing. */ set dirname(dirname2) { assertPath2(this.basename, "dirname"); this.path = minpath.join(dirname2 || "", this.basename); } /** * Get the extname (including dot) (example: `'.js'`). * * @returns {string | undefined} * Extname. */ get extname() { return typeof this.path === "string" ? minpath.extname(this.path) : void 0; } /** * Set the extname (including dot) (example: `'.js'`). * * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` * on windows). * Cannot be set if there’s no `path` yet. * * @param {string | undefined} extname * Extname. * @returns {undefined} * Nothing. */ set extname(extname2) { assertPart(extname2, "extname"); assertPath2(this.dirname, "extname"); if (extname2) { if (extname2.codePointAt(0) !== 46) { throw new Error("`extname` must start with `.`"); } if (extname2.includes(".", 1)) { throw new Error("`extname` cannot contain multiple dots"); } } this.path = minpath.join(this.dirname, this.stem + (extname2 || "")); } /** * Get the full path (example: `'~/index.min.js'`). * * @returns {string} * Path. */ get path() { return this.history[this.history.length - 1]; } /** * Set the full path (example: `'~/index.min.js'`). * * Cannot be nullified. * You can set a file URL (a `URL` object with a `file:` protocol) which will * be turned into a path with `url.fileURLToPath`. * * @param {URL | string} path * Path. * @returns {undefined} * Nothing. */ set path(path) { if (isUrl(path)) { path = urlToPath(path); } assertNonEmpty(path, "path"); if (this.path !== path) { this.history.push(path); } } /** * Get the stem (basename w/o extname) (example: `'index.min'`). * * @returns {string | undefined} * Stem. */ get stem() { return typeof this.path === "string" ? minpath.basename(this.path, this.extname) : void 0; } /** * Set the stem (basename w/o extname) (example: `'index.min'`). * * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` * on windows). * Cannot be nullified (use `file.path = file.dirname` instead). * * @param {string} stem * Stem. * @returns {undefined} * Nothing. */ set stem(stem) { assertNonEmpty(stem, "stem"); assertPart(stem, "stem"); this.path = minpath.join(this.dirname || "", stem + (this.extname || "")); } // Normal prototypal methods. /** * Create a fatal message for `reason` associated with the file. * * The `fatal` field of the message is set to `true` (error; file not usable) * and the `file` field is set to the current file path. * The message is added to the `messages` field on `file`. * * > 🪦 **Note**: also has obsolete signatures. * * @overload * @param {string} reason * @param {MessageOptions | null | undefined} [options] * @returns {never} * * @overload * @param {string} reason * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns {never} * * @overload * @param {string} reason * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns {never} * * @overload * @param {string} reason * @param {string | null | undefined} [origin] * @returns {never} * * @overload * @param {Error | VFileMessage} cause * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns {never} * * @overload * @param {Error | VFileMessage} cause * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns {never} * * @overload * @param {Error | VFileMessage} cause * @param {string | null | undefined} [origin] * @returns {never} * * @param {Error | VFileMessage | string} causeOrReason * Reason for message, should use markdown. * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] * Configuration (optional). * @param {string | null | undefined} [origin] * Place in code where the message originates (example: * `'my-package:my-rule'` or `'my-rule'`). * @returns {never} * Never. * @throws {VFileMessage} * Message. */ fail(causeOrReason, optionsOrParentOrPlace, origin) { const message = this.message(causeOrReason, optionsOrParentOrPlace, origin); message.fatal = true; throw message; } /** * Create an info message for `reason` associated with the file. * * The `fatal` field of the message is set to `undefined` (info; change * likely not needed) and the `file` field is set to the current file path. * The message is added to the `messages` field on `file`. * * > 🪦 **Note**: also has obsolete signatures. * * @overload * @param {string} reason * @param {MessageOptions | null | undefined} [options] * @returns {VFileMessage} * * @overload * @param {string} reason * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {string} reason * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {string} reason * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {Error | VFileMessage} cause * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {Error | VFileMessage} cause * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {Error | VFileMessage} cause * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @param {Error | VFileMessage | string} causeOrReason * Reason for message, should use markdown. * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] * Configuration (optional). * @param {string | null | undefined} [origin] * Place in code where the message originates (example: * `'my-package:my-rule'` or `'my-rule'`). * @returns {VFileMessage} * Message. */ info(causeOrReason, optionsOrParentOrPlace, origin) { const message = this.message(causeOrReason, optionsOrParentOrPlace, origin); message.fatal = void 0; return message; } /** * Create a message for `reason` associated with the file. * * The `fatal` field of the message is set to `false` (warning; change may be * needed) and the `file` field is set to the current file path. * The message is added to the `messages` field on `file`. * * > 🪦 **Note**: also has obsolete signatures. * * @overload * @param {string} reason * @param {MessageOptions | null | undefined} [options] * @returns {VFileMessage} * * @overload * @param {string} reason * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {string} reason * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {string} reason * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {Error | VFileMessage} cause * @param {Node | NodeLike | null | undefined} parent * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {Error | VFileMessage} cause * @param {Point | Position | null | undefined} place * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @overload * @param {Error | VFileMessage} cause * @param {string | null | undefined} [origin] * @returns {VFileMessage} * * @param {Error | VFileMessage | string} causeOrReason * Reason for message, should use markdown. * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] * Configuration (optional). * @param {string | null | undefined} [origin] * Place in code where the message originates (example: * `'my-package:my-rule'` or `'my-rule'`). * @returns {VFileMessage} * Message. */ message(causeOrReason, optionsOrParentOrPlace, origin) { const message = new VFileMessage( // @ts-expect-error: the overloads are fine. causeOrReason, optionsOrParentOrPlace, origin ); if (this.path) { message.name = this.path + ":" + message.name; message.file = this.path; } message.fatal = false; this.messages.push(message); return message; } /** * Serialize the file. * * > **Note**: which encodings are supported depends on the engine. * > For info on Node.js, see: * > . * * @param {string | null | undefined} [encoding='utf8'] * Character encoding to understand `value` as when it’s a `Uint8Array` * (default: `'utf-8'`). * @returns {string} * Serialized file. */ toString(encoding) { if (this.value === void 0) { return ""; } if (typeof this.value === "string") { return this.value; } const decoder = new TextDecoder(encoding || void 0); return decoder.decode(this.value); } }; function assertPart(part, name2) { if (part && part.includes(minpath.sep)) { throw new Error( "`" + name2 + "` cannot be a path: did not expect `" + minpath.sep + "`" ); } } function assertNonEmpty(part, name2) { if (!part) { throw new Error("`" + name2 + "` cannot be empty"); } } function assertPath2(path, name2) { if (!path) { throw new Error("Setting `" + name2 + "` requires `path` to be set too"); } } function isUint8Array(value) { return Boolean( value && typeof value === "object" && "byteLength" in value && "byteOffset" in value ); } // ../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/callable-instance.js var CallableInstance = ( /** * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result} */ /** @type {unknown} */ /** * @this {Function} * @param {string | symbol} property * @returns {(...parameters: Array) => unknown} */ (function(property) { const self = this; const constr = self.constructor; const proto = ( /** @type {Record} */ // Prototypes do exist. // type-coverage:ignore-next-line constr.prototype ); const value = proto[property]; const apply = function() { return value.apply(apply, arguments); }; Object.setPrototypeOf(apply, proto); return apply; }) ); // ../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js var own4 = {}.hasOwnProperty; var Processor = class _Processor extends CallableInstance { /** * Create a processor. */ constructor() { super("copy"); this.Compiler = void 0; this.Parser = void 0; this.attachers = []; this.compiler = void 0; this.freezeIndex = -1; this.frozen = void 0; this.namespace = {}; this.parser = void 0; this.transformers = trough(); } /** * Copy a processor. * * @deprecated * This is a private internal method and should not be used. * @returns {Processor} * New *unfrozen* processor ({@linkcode Processor}) that is * configured to work the same as its ancestor. * When the descendant processor is configured in the future it does not * affect the ancestral processor. */ copy() { const destination = ( /** @type {Processor} */ new _Processor() ); let index2 = -1; while (++index2 < this.attachers.length) { const attacher = this.attachers[index2]; destination.use(...attacher); } destination.data((0, import_extend.default)(true, {}, this.namespace)); return destination; } /** * Configure the processor with info available to all plugins. * Information is stored in an object. * * Typically, options can be given to a specific plugin, but sometimes it * makes sense to have information shared with several plugins. * For example, a list of HTML elements that are self-closing, which is * needed during all phases. * * > **Note**: setting information cannot occur on *frozen* processors. * > Call the processor first to create a new unfrozen processor. * * > **Note**: to register custom data in TypeScript, augment the * > {@linkcode Data} interface. * * @example * This example show how to get and set info: * * ```js * import {unified} from 'unified' * * const processor = unified().data('alpha', 'bravo') * * processor.data('alpha') // => 'bravo' * * processor.data() // => {alpha: 'bravo'} * * processor.data({charlie: 'delta'}) * * processor.data() // => {charlie: 'delta'} * ``` * * @template {keyof Data} Key * * @overload * @returns {Data} * * @overload * @param {Data} dataset * @returns {Processor} * * @overload * @param {Key} key * @returns {Data[Key]} * * @overload * @param {Key} key * @param {Data[Key]} value * @returns {Processor} * * @param {Data | Key} [key] * Key to get or set, or entire dataset to set, or nothing to get the * entire dataset (optional). * @param {Data[Key]} [value] * Value to set (optional). * @returns {unknown} * The current processor when setting, the value at `key` when getting, or * the entire dataset when getting without key. */ data(key, value) { if (typeof key === "string") { if (arguments.length === 2) { assertUnfrozen("data", this.frozen); this.namespace[key] = value; return this; } return own4.call(this.namespace, key) && this.namespace[key] || void 0; } if (key) { assertUnfrozen("data", this.frozen); this.namespace = key; return this; } return this.namespace; } /** * Freeze a processor. * * Frozen processors are meant to be extended and not to be configured * directly. * * When a processor is frozen it cannot be unfrozen. * New processors working the same way can be created by calling the * processor. * * It’s possible to freeze processors explicitly by calling `.freeze()`. * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`, * `.stringify()`, `.process()`, or `.processSync()` are called. * * @returns {Processor} * The current processor. */ freeze() { if (this.frozen) { return this; } const self = ( /** @type {Processor} */ /** @type {unknown} */ this ); while (++this.freezeIndex < this.attachers.length) { const [attacher, ...options] = this.attachers[this.freezeIndex]; if (options[0] === false) { continue; } if (options[0] === true) { options[0] = void 0; } const transformer = attacher.call(self, ...options); if (typeof transformer === "function") { this.transformers.use(transformer); } } this.frozen = true; this.freezeIndex = Number.POSITIVE_INFINITY; return this; } /** * Parse text to a syntax tree. * * > **Note**: `parse` freezes the processor if not already *frozen*. * * > **Note**: `parse` performs the parse phase, not the run phase or other * > phases. * * @param {Compatible | undefined} [file] * file to parse (optional); typically `string` or `VFile`; any value * accepted as `x` in `new VFile(x)`. * @returns {ParseTree extends undefined ? Node : ParseTree} * Syntax tree representing `file`. */ parse(file) { this.freeze(); const realFile = vfile(file); const parser = this.parser || this.Parser; assertParser("parse", parser); return parser(String(realFile), realFile); } /** * Process the given file as configured on the processor. * * > **Note**: `process` freezes the processor if not already *frozen*. * * > **Note**: `process` performs the parse, run, and stringify phases. * * @overload * @param {Compatible | undefined} file * @param {ProcessCallback>} done * @returns {undefined} * * @overload * @param {Compatible | undefined} [file] * @returns {Promise>} * * @param {Compatible | undefined} [file] * File (optional); typically `string` or `VFile`]; any value accepted as * `x` in `new VFile(x)`. * @param {ProcessCallback> | undefined} [done] * Callback (optional). * @returns {Promise | undefined} * Nothing if `done` is given. * Otherwise a promise, rejected with a fatal error or resolved with the * processed file. * * The parsed, transformed, and compiled value is available at * `file.value` (see note). * * > **Note**: unified typically compiles by serializing: most * > compilers return `string` (or `Uint8Array`). * > Some compilers, such as the one configured with * > [`rehype-react`][rehype-react], return other values (in this case, a * > React tree). * > If you’re using a compiler that doesn’t serialize, expect different * > result values. * > * > To register custom results in TypeScript, add them to * > {@linkcode CompileResultMap}. * * [rehype-react]: https://github.com/rehypejs/rehype-react */ process(file, done) { const self = this; this.freeze(); assertParser("process", this.parser || this.Parser); assertCompiler("process", this.compiler || this.Compiler); return done ? executor(void 0, done) : new Promise(executor); function executor(resolve, reject) { const realFile = vfile(file); const parseTree = ( /** @type {HeadTree extends undefined ? Node : HeadTree} */ /** @type {unknown} */ self.parse(realFile) ); self.run(parseTree, realFile, function(error, tree, file2) { if (error || !tree || !file2) { return realDone(error); } const compileTree = ( /** @type {CompileTree extends undefined ? Node : CompileTree} */ /** @type {unknown} */ tree ); const compileResult = self.stringify(compileTree, file2); if (looksLikeAValue(compileResult)) { file2.value = compileResult; } else { file2.result = compileResult; } realDone( error, /** @type {VFileWithOutput} */ file2 ); }); function realDone(error, file2) { if (error || !file2) { reject(error); } else if (resolve) { resolve(file2); } else { ok(done, "`done` is defined if `resolve` is not"); done(void 0, file2); } } } } /** * Process the given file as configured on the processor. * * An error is thrown if asynchronous transforms are configured. * * > **Note**: `processSync` freezes the processor if not already *frozen*. * * > **Note**: `processSync` performs the parse, run, and stringify phases. * * @param {Compatible | undefined} [file] * File (optional); typically `string` or `VFile`; any value accepted as * `x` in `new VFile(x)`. * @returns {VFileWithOutput} * The processed file. * * The parsed, transformed, and compiled value is available at * `file.value` (see note). * * > **Note**: unified typically compiles by serializing: most * > compilers return `string` (or `Uint8Array`). * > Some compilers, such as the one configured with * > [`rehype-react`][rehype-react], return other values (in this case, a * > React tree). * > If you’re using a compiler that doesn’t serialize, expect different * > result values. * > * > To register custom results in TypeScript, add them to * > {@linkcode CompileResultMap}. * * [rehype-react]: https://github.com/rehypejs/rehype-react */ processSync(file) { let complete = false; let result; this.freeze(); assertParser("processSync", this.parser || this.Parser); assertCompiler("processSync", this.compiler || this.Compiler); this.process(file, realDone); assertDone("processSync", "process", complete); ok(result, "we either bailed on an error or have a tree"); return result; function realDone(error, file2) { complete = true; bail(error); result = file2; } } /** * Run *transformers* on a syntax tree. * * > **Note**: `run` freezes the processor if not already *frozen*. * * > **Note**: `run` performs the run phase, not other phases. * * @overload * @param {HeadTree extends undefined ? Node : HeadTree} tree * @param {RunCallback} done * @returns {undefined} * * @overload * @param {HeadTree extends undefined ? Node : HeadTree} tree * @param {Compatible | undefined} file * @param {RunCallback} done * @returns {undefined} * * @overload * @param {HeadTree extends undefined ? Node : HeadTree} tree * @param {Compatible | undefined} [file] * @returns {Promise} * * @param {HeadTree extends undefined ? Node : HeadTree} tree * Tree to transform and inspect. * @param {( * RunCallback | * Compatible * )} [file] * File associated with `node` (optional); any value accepted as `x` in * `new VFile(x)`. * @param {RunCallback} [done] * Callback (optional). * @returns {Promise | undefined} * Nothing if `done` is given. * Otherwise, a promise rejected with a fatal error or resolved with the * transformed tree. */ run(tree, file, done) { assertNode(tree); this.freeze(); const transformers = this.transformers; if (!done && typeof file === "function") { done = file; file = void 0; } return done ? executor(void 0, done) : new Promise(executor); function executor(resolve, reject) { ok( typeof file !== "function", "`file` can’t be a `done` anymore, we checked" ); const realFile = vfile(file); transformers.run(tree, realFile, realDone); function realDone(error, outputTree, file2) { const resultingTree = ( /** @type {TailTree extends undefined ? Node : TailTree} */ outputTree || tree ); if (error) { reject(error); } else if (resolve) { resolve(resultingTree); } else { ok(done, "`done` is defined if `resolve` is not"); done(void 0, resultingTree, file2); } } } } /** * Run *transformers* on a syntax tree. * * An error is thrown if asynchronous transforms are configured. * * > **Note**: `runSync` freezes the processor if not already *frozen*. * * > **Note**: `runSync` performs the run phase, not other phases. * * @param {HeadTree extends undefined ? Node : HeadTree} tree * Tree to transform and inspect. * @param {Compatible | undefined} [file] * File associated with `node` (optional); any value accepted as `x` in * `new VFile(x)`. * @returns {TailTree extends undefined ? Node : TailTree} * Transformed tree. */ runSync(tree, file) { let complete = false; let result; this.run(tree, file, realDone); assertDone("runSync", "run", complete); ok(result, "we either bailed on an error or have a tree"); return result; function realDone(error, tree2) { bail(error); result = tree2; complete = true; } } /** * Compile a syntax tree. * * > **Note**: `stringify` freezes the processor if not already *frozen*. * * > **Note**: `stringify` performs the stringify phase, not the run phase * > or other phases. * * @param {CompileTree extends undefined ? Node : CompileTree} tree * Tree to compile. * @param {Compatible | undefined} [file] * File associated with `node` (optional); any value accepted as `x` in * `new VFile(x)`. * @returns {CompileResult extends undefined ? Value : CompileResult} * Textual representation of the tree (see note). * * > **Note**: unified typically compiles by serializing: most compilers * > return `string` (or `Uint8Array`). * > Some compilers, such as the one configured with * > [`rehype-react`][rehype-react], return other values (in this case, a * > React tree). * > If you’re using a compiler that doesn’t serialize, expect different * > result values. * > * > To register custom results in TypeScript, add them to * > {@linkcode CompileResultMap}. * * [rehype-react]: https://github.com/rehypejs/rehype-react */ stringify(tree, file) { this.freeze(); const realFile = vfile(file); const compiler2 = this.compiler || this.Compiler; assertCompiler("stringify", compiler2); assertNode(tree); return compiler2(tree, realFile); } /** * Configure the processor to use a plugin, a list of usable values, or a * preset. * * If the processor is already using a plugin, the previous plugin * configuration is changed based on the options that are passed in. * In other words, the plugin is not added a second time. * * > **Note**: `use` cannot be called on *frozen* processors. * > Call the processor first to create a new unfrozen processor. * * @example * There are many ways to pass plugins to `.use()`. * This example gives an overview: * * ```js * import {unified} from 'unified' * * unified() * // Plugin with options: * .use(pluginA, {x: true, y: true}) * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`): * .use(pluginA, {y: false, z: true}) * // Plugins: * .use([pluginB, pluginC]) * // Two plugins, the second with options: * .use([pluginD, [pluginE, {}]]) * // Preset with plugins and settings: * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}}) * // Settings only: * .use({settings: {position: false}}) * ``` * * @template {Array} [Parameters=[]] * @template {Node | string | undefined} [Input=undefined] * @template [Output=Input] * * @overload * @param {Preset | null | undefined} [preset] * @returns {Processor} * * @overload * @param {PluggableList} list * @returns {Processor} * * @overload * @param {Plugin} plugin * @param {...(Parameters | [boolean])} parameters * @returns {UsePlugin} * * @param {PluggableList | Plugin | Preset | null | undefined} value * Usable value. * @param {...unknown} parameters * Parameters, when a plugin is given as a usable value. * @returns {Processor} * Current processor. */ use(value, ...parameters) { const attachers = this.attachers; const namespace = this.namespace; assertUnfrozen("use", this.frozen); if (value === null || value === void 0) { } else if (typeof value === "function") { addPlugin(value, parameters); } else if (typeof value === "object") { if (Array.isArray(value)) { addList(value); } else { addPreset(value); } } else { throw new TypeError("Expected usable value, not `" + value + "`"); } return this; function add(value2) { if (typeof value2 === "function") { addPlugin(value2, []); } else if (typeof value2 === "object") { if (Array.isArray(value2)) { const [plugin, ...parameters2] = ( /** @type {PluginTuple>} */ value2 ); addPlugin(plugin, parameters2); } else { addPreset(value2); } } else { throw new TypeError("Expected usable value, not `" + value2 + "`"); } } function addPreset(result) { if (!("plugins" in result) && !("settings" in result)) { throw new Error( "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" ); } addList(result.plugins); if (result.settings) { namespace.settings = (0, import_extend.default)(true, namespace.settings, result.settings); } } function addList(plugins) { let index2 = -1; if (plugins === null || plugins === void 0) { } else if (Array.isArray(plugins)) { while (++index2 < plugins.length) { const thing = plugins[index2]; add(thing); } } else { throw new TypeError("Expected a list of plugins, not `" + plugins + "`"); } } function addPlugin(plugin, parameters2) { let index2 = -1; let entryIndex = -1; while (++index2 < attachers.length) { if (attachers[index2][0] === plugin) { entryIndex = index2; break; } } if (entryIndex === -1) { attachers.push([plugin, ...parameters2]); } else if (parameters2.length > 0) { let [primary, ...rest] = parameters2; const currentPrimary = attachers[entryIndex][1]; if (isPlainObject(currentPrimary) && isPlainObject(primary)) { primary = (0, import_extend.default)(true, currentPrimary, primary); } attachers[entryIndex] = [plugin, primary, ...rest]; } } } }; var unified = new Processor().freeze(); function assertParser(name2, value) { if (typeof value !== "function") { throw new TypeError("Cannot `" + name2 + "` without `parser`"); } } function assertCompiler(name2, value) { if (typeof value !== "function") { throw new TypeError("Cannot `" + name2 + "` without `compiler`"); } } function assertUnfrozen(name2, frozen) { if (frozen) { throw new Error( "Cannot call `" + name2 + "` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`." ); } } function assertNode(node) { if (!isPlainObject(node) || typeof node.type !== "string") { throw new TypeError("Expected node, got `" + node + "`"); } } function assertDone(name2, asyncName, complete) { if (!complete) { throw new Error( "`" + name2 + "` finished async. Use `" + asyncName + "` instead" ); } } function vfile(value) { return looksLikeAVFile(value) ? value : new VFile(value); } function looksLikeAVFile(value) { return Boolean( value && typeof value === "object" && "message" in value && "messages" in value ); } function looksLikeAValue(value) { return typeof value === "string" || isUint8Array2(value); } function isUint8Array2(value) { return Boolean( value && typeof value === "object" && "byteLength" in value && "byteOffset" in value ); } // ../../node_modules/.pnpm/react-markdown@10.1.0_@types+react@19.2.7_react@19.2.3/node_modules/react-markdown/lib/index.js var changelog = "https://github.com/remarkjs/react-markdown/blob/main/changelog.md"; var emptyPlugins = []; var emptyRemarkRehypeOptions = { allowDangerousHtml: true }; var safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i; var deprecations = [ { from: "astPlugins", id: "remove-buggy-html-in-markdown-parser" }, { from: "allowDangerousHtml", id: "remove-buggy-html-in-markdown-parser" }, { from: "allowNode", id: "replace-allownode-allowedtypes-and-disallowedtypes", to: "allowElement" }, { from: "allowedTypes", id: "replace-allownode-allowedtypes-and-disallowedtypes", to: "allowedElements" }, { from: "className", id: "remove-classname" }, { from: "disallowedTypes", id: "replace-allownode-allowedtypes-and-disallowedtypes", to: "disallowedElements" }, { from: "escapeHtml", id: "remove-buggy-html-in-markdown-parser" }, { from: "includeElementIndex", id: "#remove-includeelementindex" }, { from: "includeNodeIndex", id: "change-includenodeindex-to-includeelementindex" }, { from: "linkTarget", id: "remove-linktarget" }, { from: "plugins", id: "change-plugins-to-remarkplugins", to: "remarkPlugins" }, { from: "rawSourcePos", id: "#remove-rawsourcepos" }, { from: "renderers", id: "change-renderers-to-components", to: "components" }, { from: "source", id: "change-source-to-children", to: "children" }, { from: "sourcePos", id: "#remove-sourcepos" }, { from: "transformImageUri", id: "#add-urltransform", to: "urlTransform" }, { from: "transformLinkUri", id: "#add-urltransform", to: "urlTransform" } ]; function Markdown(options) { const processor = createProcessor(options); const file = createFile(options); return post(processor.runSync(processor.parse(file), file), options); } async function MarkdownAsync(options) { const processor = createProcessor(options); const file = createFile(options); const tree = await processor.run(processor.parse(file), file); return post(tree, options); } function MarkdownHooks(options) { const processor = createProcessor(options); const [error, setError] = (0, import_react.useState)( /** @type {Error | undefined} */ void 0 ); const [tree, setTree] = (0, import_react.useState)( /** @type {Root | undefined} */ void 0 ); (0, import_react.useEffect)( function() { let cancelled = false; const file = createFile(options); processor.run(processor.parse(file), file, function(error2, tree2) { if (!cancelled) { setError(error2); setTree(tree2); } }); return function() { cancelled = true; }; }, [ options.children, options.rehypePlugins, options.remarkPlugins, options.remarkRehypeOptions ] ); if (error) throw error; return tree ? post(tree, options) : options.fallback; } function createProcessor(options) { const rehypePlugins = options.rehypePlugins || emptyPlugins; const remarkPlugins = options.remarkPlugins || emptyPlugins; const remarkRehypeOptions = options.remarkRehypeOptions ? { ...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions } : emptyRemarkRehypeOptions; const processor = unified().use(remarkParse).use(remarkPlugins).use(remarkRehype, remarkRehypeOptions).use(rehypePlugins); return processor; } function createFile(options) { const children = options.children || ""; const file = new VFile(); if (typeof children === "string") { file.value = children; } else { unreachable( "Unexpected value `" + children + "` for `children` prop, expected `string`" ); } return file; } function post(tree, options) { const allowedElements = options.allowedElements; const allowElement = options.allowElement; const components = options.components; const disallowedElements = options.disallowedElements; const skipHtml = options.skipHtml; const unwrapDisallowed = options.unwrapDisallowed; const urlTransform = options.urlTransform || defaultUrlTransform; for (const deprecation of deprecations) { if (Object.hasOwn(options, deprecation.from)) { unreachable( "Unexpected `" + deprecation.from + "` prop, " + (deprecation.to ? "use `" + deprecation.to + "` instead" : "remove it") + " (see <" + changelog + "#" + deprecation.id + "> for more info)" ); } } if (allowedElements && disallowedElements) { unreachable( "Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other" ); } visit(tree, transform); return toJsxRuntime(tree, { Fragment: import_jsx_runtime.Fragment, components, ignoreInvalidStyle: true, jsx: import_jsx_runtime.jsx, jsxs: import_jsx_runtime.jsxs, passKeys: true, passNode: true }); function transform(node, index2, parent) { if (node.type === "raw" && parent && typeof index2 === "number") { if (skipHtml) { parent.children.splice(index2, 1); } else { parent.children[index2] = { type: "text", value: node.value }; } return index2; } if (node.type === "element") { let key; for (key in urlAttributes) { if (Object.hasOwn(urlAttributes, key) && Object.hasOwn(node.properties, key)) { const value = node.properties[key]; const test = urlAttributes[key]; if (test === null || test.includes(node.tagName)) { node.properties[key] = urlTransform(String(value || ""), key, node); } } } } if (node.type === "element") { let remove = allowedElements ? !allowedElements.includes(node.tagName) : disallowedElements ? disallowedElements.includes(node.tagName) : false; if (!remove && allowElement && typeof index2 === "number") { remove = !allowElement(node, index2, parent); } if (remove && parent && typeof index2 === "number") { if (unwrapDisallowed && node.children) { parent.children.splice(index2, 1, ...node.children); } else { parent.children.splice(index2, 1); } return index2; } } } } function defaultUrlTransform(value) { const colon = value.indexOf(":"); const questionMark = value.indexOf("?"); const numberSign = value.indexOf("#"); const slash = value.indexOf("/"); if ( // If there is no protocol, it’s relative. colon === -1 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol. slash !== -1 && colon > slash || questionMark !== -1 && colon > questionMark || numberSign !== -1 && colon > numberSign || // It is a protocol, it should be allowed. safeProtocol.test(value.slice(0, colon)) ) { return value; } return ""; } export { MarkdownAsync, MarkdownHooks, Markdown as default, defaultUrlTransform }; //# sourceMappingURL=react-markdown.js.map