import { decodeEntities, dedent, log$1 } from "./chunk-3PMDUHG4.js"; import { dequal } from "./chunk-HTVXVXIR.js"; import { __commonJS, __export, __toESM } from "./chunk-TNDHKS54.js"; // node_modules/ms/index.js var require_ms = __commonJS({ "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, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); } } }); // node_modules/debug/src/common.js var require_common = __commonJS({ "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 = extend; 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 extend(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 = []; let i; const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); const len = split.length; for (i = 0; i < len; i++) { if (!split[i]) { continue; } namespaces = split[i].replace(/\*/g, ".*?"); if (namespaces[0] === "-") { createDebug2.skips.push(new RegExp("^" + namespaces.slice(1) + "$")); } else { createDebug2.names.push(new RegExp("^" + namespaces + "$")); } } } function disable2() { const namespaces = [ ...createDebug2.names.map(toNamespace), ...createDebug2.skips.map(toNamespace).map((namespace) => "-" + namespace) ].join(","); createDebug2.enable(""); return namespaces; } function enabled(name) { if (name[name.length - 1] === "*") { return true; } let i; let len; for (i = 0, len = createDebug2.skips.length; i < len; i++) { if (createDebug2.skips[i].test(name)) { return false; } } for (i = 0, len = createDebug2.names.length; i < len; i++) { if (createDebug2.names[i].test(name)) { return true; } } return false; } function toNamespace(regexp) { return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*"); } 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/debug/src/browser.js var require_browser = __commonJS({ "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; } 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 && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$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"); } 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/kleur/index.mjs var FORCE_COLOR; var NODE_DISABLE_COLORS; var NO_COLOR; var TERM; var isTTY = true; if (typeof process !== "undefined") { ({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {}); isTTY = process.stdout && process.stdout.isTTY; } var $ = { enabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== "dumb" && (FORCE_COLOR != null && FORCE_COLOR !== "0" || isTTY), // modifiers reset: init(0, 0), bold: init(1, 22), dim: init(2, 22), italic: init(3, 23), underline: init(4, 24), inverse: init(7, 27), hidden: init(8, 28), strikethrough: init(9, 29), // colors black: init(30, 39), red: init(31, 39), green: init(32, 39), yellow: init(33, 39), blue: init(34, 39), magenta: init(35, 39), cyan: init(36, 39), white: init(37, 39), gray: init(90, 39), grey: init(90, 39), // background colors bgBlack: init(40, 49), bgRed: init(41, 49), bgGreen: init(42, 49), bgYellow: init(43, 49), bgBlue: init(44, 49), bgMagenta: init(45, 49), bgCyan: init(46, 49), bgWhite: init(47, 49) }; function run(arr, str) { let i = 0, tmp, beg = "", end = ""; for (; i < arr.length; i++) { tmp = arr[i]; beg += tmp.open; end += tmp.close; if (!!~str.indexOf(tmp.close)) { str = str.replace(tmp.rgx, tmp.close + tmp.open); } } return beg + str + end; } function chain(has, keys) { let ctx = { has, keys }; ctx.reset = $.reset.bind(ctx); ctx.bold = $.bold.bind(ctx); ctx.dim = $.dim.bind(ctx); ctx.italic = $.italic.bind(ctx); ctx.underline = $.underline.bind(ctx); ctx.inverse = $.inverse.bind(ctx); ctx.hidden = $.hidden.bind(ctx); ctx.strikethrough = $.strikethrough.bind(ctx); ctx.black = $.black.bind(ctx); ctx.red = $.red.bind(ctx); ctx.green = $.green.bind(ctx); ctx.yellow = $.yellow.bind(ctx); ctx.blue = $.blue.bind(ctx); ctx.magenta = $.magenta.bind(ctx); ctx.cyan = $.cyan.bind(ctx); ctx.white = $.white.bind(ctx); ctx.gray = $.gray.bind(ctx); ctx.grey = $.grey.bind(ctx); ctx.bgBlack = $.bgBlack.bind(ctx); ctx.bgRed = $.bgRed.bind(ctx); ctx.bgGreen = $.bgGreen.bind(ctx); ctx.bgYellow = $.bgYellow.bind(ctx); ctx.bgBlue = $.bgBlue.bind(ctx); ctx.bgMagenta = $.bgMagenta.bind(ctx); ctx.bgCyan = $.bgCyan.bind(ctx); ctx.bgWhite = $.bgWhite.bind(ctx); return ctx; } function init(open, close) { let blk = { open: `\x1B[${open}m`, close: `\x1B[${close}m`, rgx: new RegExp(`\\x1b\\[${close}m`, "g") }; return function(txt) { if (this !== void 0 && this.has !== void 0) { !!~this.has.indexOf(open) || (this.has.push(open), this.keys.push(blk)); return txt === void 0 ? this : $.enabled ? run(this.keys, txt + "") : txt + ""; } return txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt + "") : txt + ""; }; } var kleur_default = $; // node_modules/diff/lib/index.mjs function Diff() { } Diff.prototype = { diff: function diff(oldString, newString) { var _options$timeout; var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; var callback = options.callback; if (typeof options === "function") { callback = options; options = {}; } this.options = options; var self = this; function done(value) { if (callback) { setTimeout(function() { callback(void 0, value); }, 0); return true; } else { return value; } } oldString = this.castInput(oldString); newString = this.castInput(newString); oldString = this.removeEmpty(this.tokenize(oldString)); newString = this.removeEmpty(this.tokenize(newString)); var newLen = newString.length, oldLen = oldString.length; var editLength = 1; var maxEditLength = newLen + oldLen; if (options.maxEditLength) { maxEditLength = Math.min(maxEditLength, options.maxEditLength); } var maxExecutionTime = (_options$timeout = options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity; var abortAfterTimestamp = Date.now() + maxExecutionTime; var bestPath = [{ oldPos: -1, lastComponent: void 0 }]; var newPos = this.extractCommon(bestPath[0], newString, oldString, 0); if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) { return done([{ value: this.join(newString), count: newString.length }]); } var minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity; function execEditLength() { for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) { var basePath = void 0; var removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1]; if (removePath) { bestPath[diagonalPath - 1] = void 0; } var canAdd = false; if (addPath) { var addPathNewPos = addPath.oldPos - diagonalPath; canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen; } var canRemove = removePath && removePath.oldPos + 1 < oldLen; if (!canAdd && !canRemove) { bestPath[diagonalPath] = void 0; continue; } if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) { basePath = self.addToPath(addPath, true, void 0, 0); } else { basePath = self.addToPath(removePath, void 0, true, 1); } newPos = self.extractCommon(basePath, newString, oldString, diagonalPath); if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) { return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken)); } else { bestPath[diagonalPath] = basePath; if (basePath.oldPos + 1 >= oldLen) { maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1); } if (newPos + 1 >= newLen) { minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1); } } } editLength++; } if (callback) { (function exec() { setTimeout(function() { if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) { return callback(); } if (!execEditLength()) { exec(); } }, 0); })(); } else { while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) { var ret = execEditLength(); if (ret) { return ret; } } } }, addToPath: function addToPath(path, added, removed, oldPosInc) { var last = path.lastComponent; if (last && last.added === added && last.removed === removed) { return { oldPos: path.oldPos + oldPosInc, lastComponent: { count: last.count + 1, added, removed, previousComponent: last.previousComponent } }; } else { return { oldPos: path.oldPos + oldPosInc, lastComponent: { count: 1, added, removed, previousComponent: last } }; } }, extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { var newLen = newString.length, oldLen = oldString.length, oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0; while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { newPos++; oldPos++; commonCount++; } if (commonCount) { basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent }; } basePath.oldPos = oldPos; return newPos; }, equals: function equals(left, right) { if (this.options.comparator) { return this.options.comparator(left, right); } else { return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); } }, removeEmpty: function removeEmpty(array) { var ret = []; for (var i = 0; i < array.length; i++) { if (array[i]) { ret.push(array[i]); } } return ret; }, castInput: function castInput(value) { return value; }, tokenize: function tokenize(value) { return value.split(""); }, join: function join(chars2) { return chars2.join(""); } }; function buildValues(diff2, lastComponent, newString, oldString, useLongestToken) { var components = []; var nextComponent; while (lastComponent) { components.push(lastComponent); nextComponent = lastComponent.previousComponent; delete lastComponent.previousComponent; lastComponent = nextComponent; } components.reverse(); var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; for (; componentPos < componentLen; componentPos++) { var component = components[componentPos]; if (!component.removed) { if (!component.added && useLongestToken) { var value = newString.slice(newPos, newPos + component.count); value = value.map(function(value2, i) { var oldValue = oldString[oldPos + i]; return oldValue.length > value2.length ? oldValue : value2; }); component.value = diff2.join(value); } else { component.value = diff2.join(newString.slice(newPos, newPos + component.count)); } newPos += component.count; if (!component.added) { oldPos += component.count; } } else { component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); oldPos += component.count; if (componentPos && components[componentPos - 1].added) { var tmp = components[componentPos - 1]; components[componentPos - 1] = components[componentPos]; components[componentPos] = tmp; } } } var finalComponent = components[componentLen - 1]; if (componentLen > 1 && typeof finalComponent.value === "string" && (finalComponent.added || finalComponent.removed) && diff2.equals("", finalComponent.value)) { components[componentLen - 2].value += finalComponent.value; components.pop(); } return components; } var characterDiff = new Diff(); function diffChars(oldStr, newStr, options) { return characterDiff.diff(oldStr, newStr, options); } var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; var reWhitespace = /\S/; var wordDiff = new Diff(); wordDiff.equals = function(left, right) { if (this.options.ignoreCase) { left = left.toLowerCase(); right = right.toLowerCase(); } return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); }; wordDiff.tokenize = function(value) { var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); for (var i = 0; i < tokens.length - 1; i++) { if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { tokens[i] += tokens[i + 2]; tokens.splice(i + 1, 2); i--; } } return tokens; }; var lineDiff = new Diff(); lineDiff.tokenize = function(value) { if (this.options.stripTrailingCr) { value = value.replace(/\r\n/g, "\n"); } var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); if (!linesAndNewlines[linesAndNewlines.length - 1]) { linesAndNewlines.pop(); } for (var i = 0; i < linesAndNewlines.length; i++) { var line2 = linesAndNewlines[i]; if (i % 2 && !this.options.newlineIsToken) { retLines[retLines.length - 1] += line2; } else { if (this.options.ignoreWhitespace) { line2 = line2.trim(); } retLines.push(line2); } } return retLines; }; function diffLines(oldStr, newStr, callback) { return lineDiff.diff(oldStr, newStr, callback); } var sentenceDiff = new Diff(); sentenceDiff.tokenize = function(value) { return value.split(/(\S.+?[.!?])(?=\s+|$)/); }; var cssDiff = new Diff(); cssDiff.tokenize = function(value) { return value.split(/([{}:;,]|\s+)/); }; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function(obj2) { return typeof obj2; }; } else { _typeof = function(obj2) { return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }; } return _typeof(obj); } var objectPrototypeToString = Object.prototype.toString; var jsonDiff = new Diff(); jsonDiff.useLongestToken = true; jsonDiff.tokenize = lineDiff.tokenize; jsonDiff.castInput = function(value) { var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { return typeof v === "undefined" ? undefinedReplacement : v; } : _this$options$stringi; return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " "); }; jsonDiff.equals = function(left, right) { return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); }; function canonicalize(obj, stack, replacementStack, replacer, key) { stack = stack || []; replacementStack = replacementStack || []; if (replacer) { obj = replacer(key, obj); } var i; for (i = 0; i < stack.length; i += 1) { if (stack[i] === obj) { return replacementStack[i]; } } var canonicalizedObj; if ("[object Array]" === objectPrototypeToString.call(obj)) { stack.push(obj); canonicalizedObj = new Array(obj.length); replacementStack.push(canonicalizedObj); for (i = 0; i < obj.length; i += 1) { canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); } stack.pop(); replacementStack.pop(); return canonicalizedObj; } if (obj && obj.toJSON) { obj = obj.toJSON(); } if (_typeof(obj) === "object" && obj !== null) { stack.push(obj); canonicalizedObj = {}; replacementStack.push(canonicalizedObj); var sortedKeys = [], _key; for (_key in obj) { if (obj.hasOwnProperty(_key)) { sortedKeys.push(_key); } } sortedKeys.sort(); for (i = 0; i < sortedKeys.length; i += 1) { _key = sortedKeys[i]; canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); } stack.pop(); replacementStack.pop(); } else { canonicalizedObj = obj; } return canonicalizedObj; } var arrayDiff = new Diff(); arrayDiff.tokenize = function(value) { return value.slice(); }; arrayDiff.join = arrayDiff.removeEmpty = function(value) { return value; }; function diffArrays(oldArr, newArr, callback) { return arrayDiff.diff(oldArr, newArr, callback); } // node_modules/uvu/diff/index.mjs var colors = { "--": kleur_default.red, "··": kleur_default.grey, "++": kleur_default.green }; var TITLE = kleur_default.dim().italic; var TAB = kleur_default.dim("→"); var SPACE = kleur_default.dim("·"); var NL = kleur_default.dim("↵"); var LOG = (sym, str) => colors[sym](sym + PRETTY(str)) + "\n"; var LINE = (num, x) => kleur_default.dim("L" + String(num).padStart(x, "0") + " "); var PRETTY = (str) => str.replace(/[ ]/g, SPACE).replace(/\t/g, TAB).replace(/(\r?\n)/g, NL); function line(obj, prev, pad) { let char = obj.removed ? "--" : obj.added ? "++" : "··"; let arr = obj.value.replace(/\r?\n$/, "").split("\n"); let i = 0, tmp, out = ""; if (obj.added) out += colors[char]().underline(TITLE("Expected:")) + "\n"; else if (obj.removed) out += colors[char]().underline(TITLE("Actual:")) + "\n"; for (; i < arr.length; i++) { tmp = arr[i]; if (tmp != null) { if (prev) out += LINE(prev + i, pad); out += LOG(char, tmp || "\n"); } } return out; } function arrays(input, expect) { let arr = diffArrays(input, expect); let i = 0, j = 0, k = 0, tmp, val, char, isObj, str; let out = LOG("··", "["); for (; i < arr.length; i++) { char = (tmp = arr[i]).removed ? "--" : tmp.added ? "++" : "··"; if (tmp.added) { out += colors[char]().underline(TITLE("Expected:")) + "\n"; } else if (tmp.removed) { out += colors[char]().underline(TITLE("Actual:")) + "\n"; } for (j = 0; j < tmp.value.length; j++) { isObj = tmp.value[j] && typeof tmp.value[j] === "object"; val = stringify(tmp.value[j]).split(/\r?\n/g); for (k = 0; k < val.length; ) { str = " " + val[k++] + (isObj ? "" : ","); if (isObj && k === val.length && j + 1 < tmp.value.length) str += ","; out += LOG(char, str); } } } return out + LOG("··", "]"); } function lines(input, expect, linenum = 0) { let i = 0, tmp, output = ""; let arr = diffLines(input, expect); let pad = String(expect.split(/\r?\n/g).length - linenum).length; for (; i < arr.length; i++) { output += line(tmp = arr[i], linenum, pad); if (linenum && !tmp.removed) linenum += tmp.count; } return output; } function chars(input, expect) { let arr = diffChars(input, expect); let i = 0, output = "", tmp; let l1 = input.length; let l2 = expect.length; let p1 = PRETTY(input); let p2 = PRETTY(expect); tmp = arr[i]; if (l1 === l2) { } else if (tmp.removed && arr[i + 1]) { let del = tmp.count - arr[i + 1].count; if (del == 0) { } else if (del > 0) { expect = " ".repeat(del) + expect; p2 = " ".repeat(del) + p2; l2 += del; } else if (del < 0) { input = " ".repeat(-del) + input; p1 = " ".repeat(-del) + p1; l1 += -del; } } output += direct(p1, p2, l1, l2); if (l1 === l2) { for (tmp = " "; i < l1; i++) { tmp += input[i] === expect[i] ? " " : "^"; } } else { for (tmp = " "; i < arr.length; i++) { tmp += (arr[i].added || arr[i].removed ? "^" : " ").repeat(Math.max(arr[i].count, 0)); if (i + 1 < arr.length && (arr[i].added && arr[i + 1].removed || arr[i].removed && arr[i + 1].added)) { arr[i + 1].count -= arr[i].count; } } } return output + kleur_default.red(tmp); } function direct(input, expect, lenA = String(input).length, lenB = String(expect).length) { let gutter = 4; let lenC = Math.max(lenA, lenB); let typeA = typeof input, typeB = typeof expect; if (typeA !== typeB) { gutter = 2; let delA = gutter + lenC - lenA; let delB = gutter + lenC - lenB; input += " ".repeat(delA) + kleur_default.dim(`[${typeA}]`); expect += " ".repeat(delB) + kleur_default.dim(`[${typeB}]`); lenA += delA + typeA.length + 2; lenB += delB + typeB.length + 2; lenC = Math.max(lenA, lenB); } let output = colors["++"]("++" + expect + " ".repeat(gutter + lenC - lenB) + TITLE("(Expected)")) + "\n"; return output + colors["--"]("--" + input + " ".repeat(gutter + lenC - lenA) + TITLE("(Actual)")) + "\n"; } function sort(input, expect) { var k, i = 0, tmp, isArr = Array.isArray(input); var keys = [], out = isArr ? Array(input.length) : {}; if (isArr) { for (i = 0; i < out.length; i++) { tmp = input[i]; if (!tmp || typeof tmp !== "object") out[i] = tmp; else out[i] = sort(tmp, expect[i]); } } else { for (k in expect) keys.push(k); for (; i < keys.length; i++) { if (Object.prototype.hasOwnProperty.call(input, k = keys[i])) { if (!(tmp = input[k]) || typeof tmp !== "object") out[k] = tmp; else out[k] = sort(tmp, expect[k]); } } for (k in input) { if (!out.hasOwnProperty(k)) { out[k] = input[k]; } } } return out; } function circular() { var cache = /* @__PURE__ */ new Set(); return function print(key, val) { if (val === void 0) return "[__VOID__]"; if (typeof val === "number" && val !== val) return "[__NAN__]"; if (typeof val === "bigint") return val.toString(); if (!val || typeof val !== "object") return val; if (cache.has(val)) return "[Circular]"; cache.add(val); return val; }; } function stringify(input) { return JSON.stringify(input, circular(), 2).replace(/"\[__NAN__\]"/g, "NaN").replace(/"\[__VOID__\]"/g, "undefined"); } function compare(input, expect) { if (Array.isArray(expect) && Array.isArray(input)) return arrays(input, expect); if (expect instanceof RegExp) return chars("" + input, "" + expect); let isA = input && typeof input == "object"; let isB = expect && typeof expect == "object"; if (isA && isB) input = sort(input, expect); if (isB) expect = stringify(expect); if (isA) input = stringify(input); if (expect && typeof expect == "object") { input = stringify(sort(input, expect)); expect = stringify(expect); } isA = typeof input == "string"; isB = typeof expect == "string"; if (isA && /\r?\n/.test(input)) return lines(input, "" + expect); if (isB && /\r?\n/.test(expect)) return lines("" + input, expect); if (isA && isB) return chars(input, expect); return direct(input, expect); } // node_modules/uvu/assert/index.mjs function dedent2(str) { str = str.replace(/\r?\n/g, "\n"); let arr = str.match(/^[ \t]*(?=\S)/gm); let i = 0, min = 1 / 0, len = (arr || []).length; for (; i < len; i++) min = Math.min(min, arr[i].length); return len && min ? str.replace(new RegExp(`^[ \\t]{${min}}`, "gm"), "") : str; } var Assertion = class extends Error { constructor(opts = {}) { super(opts.message); this.name = "Assertion"; this.code = "ERR_ASSERTION"; if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } this.details = opts.details || false; this.generated = !!opts.generated; this.operator = opts.operator; this.expects = opts.expects; this.actual = opts.actual; } }; function assert(bool, actual, expects, operator, detailer, backup, msg) { if (bool) return; let message = msg || backup; if (msg instanceof Error) throw msg; let details = detailer && detailer(actual, expects); throw new Assertion({ actual, expects, operator, message, details, generated: !msg }); } function ok(val, msg) { assert(!!val, false, true, "ok", false, "Expected value to be truthy", msg); } function is(val, exp, msg) { assert(val === exp, val, exp, "is", compare, "Expected values to be strictly equal:", msg); } function not(val, msg) { assert(!val, true, false, "not", false, "Expected value to be falsey", msg); } not.ok = not; is.not = function(val, exp, msg) { assert(val !== exp, val, exp, "is.not", false, "Expected values not to be strictly equal", msg); }; not.equal = function(val, exp, msg) { assert(!dequal(val, exp), val, exp, "not.equal", false, "Expected values not to be deeply equal", msg); }; not.type = function(val, exp, msg) { let tmp = typeof val; assert(tmp !== exp, tmp, exp, "not.type", false, `Expected "${tmp}" not to be "${exp}"`, msg); }; not.instance = function(val, exp, msg) { let name = "`" + (exp.name || exp.constructor.name) + "`"; assert(!(val instanceof exp), val, exp, "not.instance", false, `Expected value not to be an instance of ${name}`, msg); }; not.snapshot = function(val, exp, msg) { val = dedent2(val); exp = dedent2(exp); assert(val !== exp, val, exp, "not.snapshot", false, "Expected value not to match snapshot", msg); }; not.fixture = function(val, exp, msg) { val = dedent2(val); exp = dedent2(exp); assert(val !== exp, val, exp, "not.fixture", false, "Expected value not to match fixture", msg); }; not.match = function(val, exp, msg) { if (typeof exp === "string") { assert(!val.includes(exp), val, exp, "not.match", false, `Expected value not to include "${exp}" substring`, msg); } else { assert(!exp.test(val), val, exp, "not.match", false, `Expected value not to match \`${String(exp)}\` pattern`, msg); } }; not.throws = function(blk, exp, msg) { if (!msg && typeof exp === "string") { msg = exp; exp = null; } try { blk(); } catch (err) { if (typeof exp === "function") { assert(!exp(err), true, false, "not.throws", false, "Expected function not to throw matching exception", msg); } else if (exp instanceof RegExp) { assert(!exp.test(err.message), true, false, "not.throws", false, `Expected function not to throw exception matching \`${String(exp)}\` pattern`, msg); } else if (!exp) { assert(false, true, false, "not.throws", false, "Expected function not to throw", msg); } } }; // node_modules/mdast-util-to-string/lib/index.js var emptyOptions = {}; function toString(value, options) { const settings = options || emptyOptions; const includeImageAlt = typeof settings.includeImageAlt === "boolean" ? settings.includeImageAlt : true; const includeHtml = typeof settings.includeHtml === "boolean" ? settings.includeHtml : true; return one(value, includeImageAlt, includeHtml); } function one(value, includeImageAlt, includeHtml) { if (node(value)) { if ("value" in value) { return value.type === "html" && !includeHtml ? "" : value.value; } if (includeImageAlt && "alt" in value && value.alt) { return value.alt; } if ("children" in value) { return all(value.children, includeImageAlt, includeHtml); } } if (Array.isArray(value)) { return all(value, includeImageAlt, includeHtml); } return ""; } function all(values2, includeImageAlt, includeHtml) { const result = []; let index2 = -1; while (++index2 < values2.length) { result[index2] = one(values2[index2], includeImageAlt, includeHtml); } return result.join(""); } function node(value) { return Boolean(value && typeof value === "object"); } // node_modules/micromark-util-symbol/constants.js var constants = ( /** @type {const} */ { attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a` attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*` atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t. autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many. autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many. cdataOpeningString: "CDATA[", // And preceded by `` htmlComment: 2, // Symbol for `` htmlInstruction: 3, // Symbol for `` htmlDeclaration: 4, // Symbol for `` htmlCdata: 5, // Symbol for `` htmlBasic: 6, // Symbol for `` htmlRawSizeMax: 8, // Length of `textarea`. linkResourceDestinationBalanceMax: 32, // See: , linkReferenceSizeMax: 999, // See: listItemValueSizeMax: 10, // See: numericBaseDecimal: 10, numericBaseHexadecimal: 16, tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark. thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed. v8MaxSafeChunkSize: 1e4 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks. } ); // node_modules/micromark-util-chunked/dev/index.js function splice(list2, start, remove, items) { const end = list2.length; let chunkStart = 0; let parameters; if (start < 0) { start = -start > end ? 0 : end + start; } else { start = start > end ? end : start; } remove = remove > 0 ? remove : 0; if (items.length < constants.v8MaxSafeChunkSize) { parameters = Array.from(items); parameters.unshift(start, remove); list2.splice(...parameters); } else { if (remove) list2.splice(start, remove); while (chunkStart < items.length) { parameters = items.slice( chunkStart, chunkStart + constants.v8MaxSafeChunkSize ); parameters.unshift(start, 0); list2.splice(...parameters); chunkStart += constants.v8MaxSafeChunkSize; start += constants.v8MaxSafeChunkSize; } } } function push(list2, items) { if (list2.length > 0) { splice(list2, list2.length, 0, items); return list2; } return items; } // node_modules/micromark-util-combine-extensions/index.js var hasOwnProperty = {}.hasOwnProperty; function combineExtensions(extensions) { const all2 = {}; let index2 = -1; while (++index2 < extensions.length) { syntaxExtension(all2, extensions[index2]); } return all2; } function syntaxExtension(all2, extension2) { let hook; for (hook in extension2) { const maybe = hasOwnProperty.call(all2, hook) ? all2[hook] : void 0; const left = maybe || (all2[hook] = {}); const right = extension2[hook]; let code; if (right) { for (code in right) { if (!hasOwnProperty.call(left, code)) left[code] = []; const value = right[code]; constructs( // @ts-expect-error Looks like a list. left[code], Array.isArray(value) ? value : value ? [value] : [] ); } } } } function constructs(existing, list2) { let index2 = -1; const before = []; while (++index2 < list2.length) { ; (list2[index2].add === "after" ? existing : before).push(list2[index2]); } splice(existing, 0, 0, before); } // node_modules/micromark-util-symbol/codes.js var codes = ( /** @type {const} */ { carriageReturn: -5, lineFeed: -4, carriageReturnLineFeed: -3, horizontalTab: -2, virtualSpace: -1, eof: null, nul: 0, soh: 1, stx: 2, etx: 3, eot: 4, enq: 5, ack: 6, bel: 7, bs: 8, ht: 9, // `\t` lf: 10, // `\n` vt: 11, // `\v` ff: 12, // `\f` cr: 13, // `\r` so: 14, si: 15, dle: 16, dc1: 17, dc2: 18, dc3: 19, dc4: 20, nak: 21, syn: 22, etb: 23, can: 24, em: 25, sub: 26, esc: 27, fs: 28, gs: 29, rs: 30, us: 31, space: 32, exclamationMark: 33, // `!` quotationMark: 34, // `"` numberSign: 35, // `#` dollarSign: 36, // `$` percentSign: 37, // `%` ampersand: 38, // `&` apostrophe: 39, // `'` leftParenthesis: 40, // `(` rightParenthesis: 41, // `)` asterisk: 42, // `*` plusSign: 43, // `+` comma: 44, // `,` dash: 45, // `-` dot: 46, // `.` slash: 47, // `/` digit0: 48, // `0` digit1: 49, // `1` digit2: 50, // `2` digit3: 51, // `3` digit4: 52, // `4` digit5: 53, // `5` digit6: 54, // `6` digit7: 55, // `7` digit8: 56, // `8` digit9: 57, // `9` colon: 58, // `:` semicolon: 59, // `;` lessThan: 60, // `<` equalsTo: 61, // `=` greaterThan: 62, // `>` questionMark: 63, // `?` atSign: 64, // `@` uppercaseA: 65, // `A` uppercaseB: 66, // `B` uppercaseC: 67, // `C` uppercaseD: 68, // `D` uppercaseE: 69, // `E` uppercaseF: 70, // `F` uppercaseG: 71, // `G` uppercaseH: 72, // `H` uppercaseI: 73, // `I` uppercaseJ: 74, // `J` uppercaseK: 75, // `K` uppercaseL: 76, // `L` uppercaseM: 77, // `M` uppercaseN: 78, // `N` uppercaseO: 79, // `O` uppercaseP: 80, // `P` uppercaseQ: 81, // `Q` uppercaseR: 82, // `R` uppercaseS: 83, // `S` uppercaseT: 84, // `T` uppercaseU: 85, // `U` uppercaseV: 86, // `V` uppercaseW: 87, // `W` uppercaseX: 88, // `X` uppercaseY: 89, // `Y` uppercaseZ: 90, // `Z` leftSquareBracket: 91, // `[` backslash: 92, // `\` rightSquareBracket: 93, // `]` caret: 94, // `^` underscore: 95, // `_` graveAccent: 96, // `` ` `` lowercaseA: 97, // `a` lowercaseB: 98, // `b` lowercaseC: 99, // `c` lowercaseD: 100, // `d` lowercaseE: 101, // `e` lowercaseF: 102, // `f` lowercaseG: 103, // `g` lowercaseH: 104, // `h` lowercaseI: 105, // `i` lowercaseJ: 106, // `j` lowercaseK: 107, // `k` lowercaseL: 108, // `l` lowercaseM: 109, // `m` lowercaseN: 110, // `n` lowercaseO: 111, // `o` lowercaseP: 112, // `p` lowercaseQ: 113, // `q` lowercaseR: 114, // `r` lowercaseS: 115, // `s` lowercaseT: 116, // `t` lowercaseU: 117, // `u` lowercaseV: 118, // `v` lowercaseW: 119, // `w` lowercaseX: 120, // `x` lowercaseY: 121, // `y` lowercaseZ: 122, // `z` leftCurlyBrace: 123, // `{` verticalBar: 124, // `|` rightCurlyBrace: 125, // `}` tilde: 126, // `~` del: 127, // Unicode Specials block. byteOrderMarker: 65279, // Unicode Specials block. replacementCharacter: 65533 // `�` } ); // node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js var unicodePunctuationRegex = /[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/; // node_modules/micromark-util-character/dev/index.js var asciiAlpha = regexCheck(/[A-Za-z]/); var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/); var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/); function asciiControl(code) { return ( // Special whitespace codes (which have negative values), C0 and Control // character DEL code !== null && (code < codes.space || code === codes.del) ); } var asciiDigit = regexCheck(/\d/); var asciiHexDigit = regexCheck(/[\dA-Fa-f]/); var asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/); function markdownLineEnding(code) { return code !== null && code < codes.horizontalTab; } function markdownLineEndingOrSpace(code) { return code !== null && (code < codes.nul || code === codes.space); } function markdownSpace(code) { return code === codes.horizontalTab || code === codes.virtualSpace || code === codes.space; } var unicodePunctuation = regexCheck(unicodePunctuationRegex); var unicodeWhitespace = regexCheck(/\s/); function regexCheck(regex) { return check; function check(code) { return code !== null && regex.test(String.fromCharCode(code)); } } // node_modules/micromark-factory-space/dev/index.js function factorySpace(effects, ok2, type, max) { const limit = max ? max - 1 : Number.POSITIVE_INFINITY; let size = 0; return start; function start(code) { if (markdownSpace(code)) { effects.enter(type); return prefix(code); } return ok2(code); } function prefix(code) { if (markdownSpace(code) && size++ < limit) { effects.consume(code); return prefix; } effects.exit(type); return ok2(code); } } // node_modules/micromark-util-symbol/types.js var types = ( /** @type {const} */ { // Generic type for data, such as in a title, a destination, etc. data: "data", // Generic type for syntactic whitespace (tabs, virtual spaces, spaces). // Such as, between a fenced code fence and an info string. whitespace: "whitespace", // Generic type for line endings (line feed, carriage return, carriage return + // line feed). lineEnding: "lineEnding", // A line ending, but ending a blank line. lineEndingBlank: "lineEndingBlank", // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a // line. linePrefix: "linePrefix", // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a // line. lineSuffix: "lineSuffix", // Whole ATX heading: // // ```markdown // # // ## Alpha // ### Bravo ### // ``` // // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`. atxHeading: "atxHeading", // Sequence of number signs in an ATX heading (`###`). atxHeadingSequence: "atxHeadingSequence", // Content in an ATX heading (`alpha`). // Includes text. atxHeadingText: "atxHeadingText", // Whole autolink (`` or ``) // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`. autolink: "autolink", // Email autolink w/o markers (`admin@example.com`) autolinkEmail: "autolinkEmail", // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`). autolinkMarker: "autolinkMarker", // Protocol autolink w/o markers (`https://example.com`) autolinkProtocol: "autolinkProtocol", // A whole character escape (`\-`). // Includes `escapeMarker` and `characterEscapeValue`. characterEscape: "characterEscape", // The escaped character (`-`). characterEscapeValue: "characterEscapeValue", // A whole character reference (`&`, `≠`, or `𝌆`). // Includes `characterReferenceMarker`, an optional // `characterReferenceMarkerNumeric`, in which case an optional // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`. characterReference: "characterReference", // The start or end marker (`&` or `;`). characterReferenceMarker: "characterReferenceMarker", // Mark reference as numeric (`#`). characterReferenceMarkerNumeric: "characterReferenceMarkerNumeric", // Mark reference as numeric (`x` or `X`). characterReferenceMarkerHexadecimal: "characterReferenceMarkerHexadecimal", // Value of character reference w/o markers (`amp`, `8800`, or `1D306`). characterReferenceValue: "characterReferenceValue", // Whole fenced code: // // ````markdown // ```js // alert(1) // ``` // ```` codeFenced: "codeFenced", // A fenced code fence, including whitespace, sequence, info, and meta // (` ```js `). codeFencedFence: "codeFencedFence", // Sequence of grave accent or tilde characters (` ``` `) in a fence. codeFencedFenceSequence: "codeFencedFenceSequence", // Info word (`js`) in a fence. // Includes string. codeFencedFenceInfo: "codeFencedFenceInfo", // Meta words (`highlight="1"`) in a fence. // Includes string. codeFencedFenceMeta: "codeFencedFenceMeta", // A line of code. codeFlowValue: "codeFlowValue", // Whole indented code: // // ```markdown // alert(1) // ``` // // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`. codeIndented: "codeIndented", // A text code (``` `alpha` ```). // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include // `codeTextPadding`. codeText: "codeText", codeTextData: "codeTextData", // A space or line ending right after or before a tick. codeTextPadding: "codeTextPadding", // A text code fence (` `` `). codeTextSequence: "codeTextSequence", // Whole content: // // ```markdown // [a]: b // c // = // d // ``` // // Includes `paragraph` and `definition`. content: "content", // Whole definition: // // ```markdown // [micromark]: https://github.com/micromark/micromark // ``` // // Includes `definitionLabel`, `definitionMarker`, `whitespace`, // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`. definition: "definition", // Destination of a definition (`https://github.com/micromark/micromark` or // ``). // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`. definitionDestination: "definitionDestination", // Enclosed destination of a definition // (``). // Includes `definitionDestinationLiteralMarker` and optionally // `definitionDestinationString`. definitionDestinationLiteral: "definitionDestinationLiteral", // Markers of an enclosed definition destination (`<` or `>`). definitionDestinationLiteralMarker: "definitionDestinationLiteralMarker", // Unenclosed destination of a definition // (`https://github.com/micromark/micromark`). // Includes `definitionDestinationString`. definitionDestinationRaw: "definitionDestinationRaw", // Text in an destination (`https://github.com/micromark/micromark`). // Includes string. definitionDestinationString: "definitionDestinationString", // Label of a definition (`[micromark]`). // Includes `definitionLabelMarker` and `definitionLabelString`. definitionLabel: "definitionLabel", // Markers of a definition label (`[` or `]`). definitionLabelMarker: "definitionLabelMarker", // Value of a definition label (`micromark`). // Includes string. definitionLabelString: "definitionLabelString", // Marker between a label and a destination (`:`). definitionMarker: "definitionMarker", // Title of a definition (`"x"`, `'y'`, or `(z)`). // Includes `definitionTitleMarker` and optionally `definitionTitleString`. definitionTitle: "definitionTitle", // Marker around a title of a definition (`"`, `'`, `(`, or `)`). definitionTitleMarker: "definitionTitleMarker", // Data without markers in a title (`z`). // Includes string. definitionTitleString: "definitionTitleString", // Emphasis (`*alpha*`). // Includes `emphasisSequence` and `emphasisText`. emphasis: "emphasis", // Sequence of emphasis markers (`*` or `_`). emphasisSequence: "emphasisSequence", // Emphasis text (`alpha`). // Includes text. emphasisText: "emphasisText", // The character escape marker (`\`). escapeMarker: "escapeMarker", // A hard break created with a backslash (`\\n`). // Note: does not include the line ending. hardBreakEscape: "hardBreakEscape", // A hard break created with trailing spaces (` \n`). // Does not include the line ending. hardBreakTrailing: "hardBreakTrailing", // Flow HTML: // // ```markdown //
b`). // Includes `lineEnding`, `htmlTextData`. htmlText: "htmlText", htmlTextData: "htmlTextData", // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or // `![alpha]`). // Includes `label` and an optional `resource` or `reference`. image: "image", // Whole link label (`[*alpha*]`). // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`. label: "label", // Text in an label (`*alpha*`). // Includes text. labelText: "labelText", // Start a link label (`[`). // Includes a `labelMarker`. labelLink: "labelLink", // Start an image label (`![`). // Includes `labelImageMarker` and `labelMarker`. labelImage: "labelImage", // Marker of a label (`[` or `]`). labelMarker: "labelMarker", // Marker to start an image (`!`). labelImageMarker: "labelImageMarker", // End a label (`]`). // Includes `labelMarker`. labelEnd: "labelEnd", // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`). // Includes `label` and an optional `resource` or `reference`. link: "link", // Whole paragraph: // // ```markdown // alpha // bravo. // ``` // // Includes text. paragraph: "paragraph", // A reference (`[alpha]` or `[]`). // Includes `referenceMarker` and an optional `referenceString`. reference: "reference", // A reference marker (`[` or `]`). referenceMarker: "referenceMarker", // Reference text (`alpha`). // Includes string. referenceString: "referenceString", // A resource (`(https://example.com "alpha")`). // Includes `resourceMarker`, an optional `resourceDestination` with an optional // `whitespace` and `resourceTitle`. resource: "resource", // A resource destination (`https://example.com`). // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`. resourceDestination: "resourceDestination", // A literal resource destination (``). // Includes `resourceDestinationLiteralMarker` and optionally // `resourceDestinationString`. resourceDestinationLiteral: "resourceDestinationLiteral", // A resource destination marker (`<` or `>`). resourceDestinationLiteralMarker: "resourceDestinationLiteralMarker", // A raw resource destination (`https://example.com`). // Includes `resourceDestinationString`. resourceDestinationRaw: "resourceDestinationRaw", // Resource destination text (`https://example.com`). // Includes string. resourceDestinationString: "resourceDestinationString", // A resource marker (`(` or `)`). resourceMarker: "resourceMarker", // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`). // Includes `resourceTitleMarker` and optionally `resourceTitleString`. resourceTitle: "resourceTitle", // A resource title marker (`"`, `'`, `(`, or `)`). resourceTitleMarker: "resourceTitleMarker", // Resource destination title (`alpha`). // Includes string. resourceTitleString: "resourceTitleString", // Whole setext heading: // // ```markdown // alpha // bravo // ===== // ``` // // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and // `setextHeadingLine`. setextHeading: "setextHeading", // Content in a setext heading (`alpha\nbravo`). // Includes text. setextHeadingText: "setextHeadingText", // Underline in a setext heading, including whitespace suffix (`==`). // Includes `setextHeadingLineSequence`. setextHeadingLine: "setextHeadingLine", // Sequence of equals or dash characters in underline in a setext heading (`-`). setextHeadingLineSequence: "setextHeadingLineSequence", // Strong (`**alpha**`). // Includes `strongSequence` and `strongText`. strong: "strong", // Sequence of strong markers (`**` or `__`). strongSequence: "strongSequence", // Strong text (`alpha`). // Includes text. strongText: "strongText", // Whole thematic break: // // ```markdown // * * * // ``` // // Includes `thematicBreakSequence` and `whitespace`. thematicBreak: "thematicBreak", // A sequence of one or more thematic break markers (`***`). thematicBreakSequence: "thematicBreakSequence", // Whole block quote: // // ```markdown // > a // > // > b // ``` // // Includes `blockQuotePrefix` and flow. blockQuote: "blockQuote", // The `>` or `> ` of a block quote. blockQuotePrefix: "blockQuotePrefix", // The `>` of a block quote prefix. blockQuoteMarker: "blockQuoteMarker", // The optional ` ` of a block quote prefix. blockQuotePrefixWhitespace: "blockQuotePrefixWhitespace", // Whole unordered list: // // ```markdown // - a // b // ``` // // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further // lines. listOrdered: "listOrdered", // Whole ordered list: // // ```markdown // 1. a // b // ``` // // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further // lines. listUnordered: "listUnordered", // The indent of further list item lines. listItemIndent: "listItemIndent", // A marker, as in, `*`, `+`, `-`, `.`, or `)`. listItemMarker: "listItemMarker", // The thing that starts a list item, such as `1. `. // Includes `listItemValue` if ordered, `listItemMarker`, and // `listItemPrefixWhitespace` (unless followed by a line ending). listItemPrefix: "listItemPrefix", // The whitespace after a marker. listItemPrefixWhitespace: "listItemPrefixWhitespace", // The numerical value of an ordered item. listItemValue: "listItemValue", // Internal types used for subtokenizers, compiled away chunkDocument: "chunkDocument", chunkContent: "chunkContent", chunkFlow: "chunkFlow", chunkText: "chunkText", chunkString: "chunkString" } ); // node_modules/micromark/dev/lib/initialize/content.js var content = { tokenize: initializeContent }; function initializeContent(effects) { const contentStart = effects.attempt( this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial ); let previous2; return contentStart; function afterContentStartConstruct(code) { ok( code === codes.eof || markdownLineEnding(code), "expected eol or eof" ); if (code === codes.eof) { effects.consume(code); return; } effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return factorySpace(effects, contentStart, types.linePrefix); } function paragraphInitial(code) { ok( code !== codes.eof && !markdownLineEnding(code), "expected anything other than a line ending or EOF" ); effects.enter(types.paragraph); return lineStart(code); } function lineStart(code) { const token = effects.enter(types.chunkText, { contentType: constants.contentTypeText, previous: previous2 }); if (previous2) { previous2.next = token; } previous2 = token; return data(code); } function data(code) { if (code === codes.eof) { effects.exit(types.chunkText); effects.exit(types.paragraph); effects.consume(code); return; } if (markdownLineEnding(code)) { effects.consume(code); effects.exit(types.chunkText); return lineStart; } effects.consume(code); return data; } } // 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 start; function start(code) { 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 )(code); } return checkNewContainers(code); } function documentContinue(code) { 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 = Object.assign({}, point3); index2++; } splice( self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits) ); self.events.length = index2; return checkNewContainers(code); } return start(code); } function checkNewContainers(code) { if (continued === stack.length) { if (!childFlow) { return documentContinued(code); } if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { return flowStart(code); } self.interrupt = Boolean( childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack ); } self.containerState = {}; return effects.check( containerConstruct, thereIsANewContainer, thereIsNoNewContainer )(code); } function thereIsANewContainer(code) { if (childFlow) closeFlow(); exitContainers(continued); return documentContinued(code); } function thereIsNoNewContainer(code) { self.parser.lazy[self.now().line] = continued !== stack.length; lineStartOffset = self.now().offset; return flowStart(code); } function documentContinued(code) { self.containerState = {}; return effects.attempt( containerConstruct, containerContinue, flowStart )(code); } function containerContinue(code) { 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(code); } function flowStart(code) { if (code === codes.eof) { if (childFlow) closeFlow(); exitContainers(0); effects.consume(code); return; } childFlow = childFlow || self.parser.flow(self.now()); effects.enter(types.chunkFlow, { contentType: constants.contentTypeFlow, previous: childToken, _tokenizer: childFlow }); return flowContinue(code); } function flowContinue(code) { if (code === codes.eof) { writeToChild(effects.exit(types.chunkFlow), true); exitContainers(0); effects.consume(code); return; } if (markdownLineEnding(code)) { effects.consume(code); writeToChild(effects.exit(types.chunkFlow)); continued = 0; self.interrupt = void 0; return start; } effects.consume(code); return flowContinue; } function writeToChild(token, eof) { ok(childFlow, "expected `childFlow` to be defined when continuing"); const stream = self.sliceStream(token); if (eof) 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 = Object.assign({}, 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/micromark-util-classify-character/dev/index.js function classifyCharacter(code) { if (code === codes.eof || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { return constants.characterGroupWhitespace; } if (unicodePunctuation(code)) { return constants.characterGroupPunctuation; } } // node_modules/micromark-util-resolve-all/index.js function resolveAll(constructs2, events, context) { const called = []; let index2 = -1; while (++index2 < constructs2.length) { const resolve = constructs2[index2].resolveAll; if (resolve && !called.includes(resolve)) { events = resolve(events, context); called.push(resolve); } } return events; } // node_modules/micromark-core-commonmark/dev/lib/attention.js var attention = { name: "attention", tokenize: tokenizeAttention, resolveAll: resolveAllAttention }; function resolveAllAttention(events, context) { let index2 = -1; let open; let group; let text3; let openingSequence; let closingSequence; let use; let nextEvents; let offset; while (++index2 < events.length) { if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) { open = index2; while (open--) { if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && // If the markers are the same: context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) { if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3)) { continue; } use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1; const start = Object.assign({}, events[open][1].end); const end = Object.assign({}, events[index2][1].start); movePoint(start, -use); movePoint(end, use); openingSequence = { type: use > 1 ? types.strongSequence : types.emphasisSequence, start, end: Object.assign({}, events[open][1].end) }; closingSequence = { type: use > 1 ? types.strongSequence : types.emphasisSequence, start: Object.assign({}, events[index2][1].start), end }; text3 = { type: use > 1 ? types.strongText : types.emphasisText, start: Object.assign({}, events[open][1].end), end: Object.assign({}, events[index2][1].start) }; group = { type: use > 1 ? types.strong : types.emphasis, start: Object.assign({}, openingSequence.start), end: Object.assign({}, closingSequence.end) }; events[open][1].end = Object.assign({}, openingSequence.start); events[index2][1].start = Object.assign({}, closingSequence.end); nextEvents = []; if (events[open][1].end.offset - events[open][1].start.offset) { nextEvents = push(nextEvents, [ ["enter", events[open][1], context], ["exit", events[open][1], context] ]); } nextEvents = push(nextEvents, [ ["enter", group, context], ["enter", openingSequence, context], ["exit", openingSequence, context], ["enter", text3, context] ]); ok( context.parser.constructs.insideSpan.null, "expected `insideSpan` to be populated" ); nextEvents = push( nextEvents, resolveAll( context.parser.constructs.insideSpan.null, events.slice(open + 1, index2), context ) ); nextEvents = push(nextEvents, [ ["exit", text3, context], ["enter", closingSequence, context], ["exit", closingSequence, context], ["exit", group, context] ]); if (events[index2][1].end.offset - events[index2][1].start.offset) { offset = 2; nextEvents = push(nextEvents, [ ["enter", events[index2][1], context], ["exit", events[index2][1], context] ]); } else { offset = 0; } splice(events, open - 1, index2 - open + 3, nextEvents); index2 = open + nextEvents.length - offset - 2; break; } } } } index2 = -1; while (++index2 < events.length) { if (events[index2][1].type === "attentionSequence") { events[index2][1].type = "data"; } } return events; } function tokenizeAttention(effects, ok2) { const attentionMarkers2 = this.parser.constructs.attentionMarkers.null; const previous2 = this.previous; const before = classifyCharacter(previous2); let marker; return start; function start(code) { ok( code === codes.asterisk || code === codes.underscore, "expected asterisk or underscore" ); marker = code; effects.enter("attentionSequence"); return inside(code); } function inside(code) { if (code === marker) { effects.consume(code); return inside; } const token = effects.exit("attentionSequence"); const after = classifyCharacter(code); ok(attentionMarkers2, "expected `attentionMarkers` to be populated"); const open = !after || after === constants.characterGroupPunctuation && before || attentionMarkers2.includes(code); const close = !before || before === constants.characterGroupPunctuation && after || attentionMarkers2.includes(previous2); token._open = Boolean( marker === codes.asterisk ? open : open && (before || !close) ); token._close = Boolean( marker === codes.asterisk ? close : close && (after || !open) ); return ok2(code); } } function movePoint(point3, offset) { point3.column += offset; point3.offset += offset; point3._bufferIndex += offset; } // node_modules/micromark-core-commonmark/dev/lib/autolink.js var autolink = { name: "autolink", tokenize: tokenizeAutolink }; function tokenizeAutolink(effects, ok2, nok) { let size = 0; return start; function start(code) { ok(code === codes.lessThan, "expected `<`"); effects.enter(types.autolink); effects.enter(types.autolinkMarker); effects.consume(code); effects.exit(types.autolinkMarker); effects.enter(types.autolinkProtocol); return open; } function open(code) { if (asciiAlpha(code)) { effects.consume(code); return schemeOrEmailAtext; } return emailAtext(code); } function schemeOrEmailAtext(code) { if (code === codes.plusSign || code === codes.dash || code === codes.dot || asciiAlphanumeric(code)) { size = 1; return schemeInsideOrEmailAtext(code); } return emailAtext(code); } function schemeInsideOrEmailAtext(code) { if (code === codes.colon) { effects.consume(code); size = 0; return urlInside; } if ((code === codes.plusSign || code === codes.dash || code === codes.dot || asciiAlphanumeric(code)) && size++ < constants.autolinkSchemeSizeMax) { effects.consume(code); return schemeInsideOrEmailAtext; } size = 0; return emailAtext(code); } function urlInside(code) { if (code === codes.greaterThan) { effects.exit(types.autolinkProtocol); effects.enter(types.autolinkMarker); effects.consume(code); effects.exit(types.autolinkMarker); effects.exit(types.autolink); return ok2; } if (code === codes.eof || code === codes.space || code === codes.lessThan || asciiControl(code)) { return nok(code); } effects.consume(code); return urlInside; } function emailAtext(code) { if (code === codes.atSign) { effects.consume(code); return emailAtSignOrDot; } if (asciiAtext(code)) { effects.consume(code); return emailAtext; } return nok(code); } function emailAtSignOrDot(code) { return asciiAlphanumeric(code) ? emailLabel(code) : nok(code); } function emailLabel(code) { if (code === codes.dot) { effects.consume(code); size = 0; return emailAtSignOrDot; } if (code === codes.greaterThan) { effects.exit(types.autolinkProtocol).type = types.autolinkEmail; effects.enter(types.autolinkMarker); effects.consume(code); effects.exit(types.autolinkMarker); effects.exit(types.autolink); return ok2; } return emailValue(code); } function emailValue(code) { if ((code === codes.dash || asciiAlphanumeric(code)) && size++ < constants.autolinkDomainSizeMax) { const next = code === codes.dash ? emailValue : emailLabel; effects.consume(code); return next; } return nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/blank-line.js var blankLine = { tokenize: tokenizeBlankLine, partial: true }; function tokenizeBlankLine(effects, ok2, nok) { return start; function start(code) { return markdownSpace(code) ? factorySpace(effects, after, types.linePrefix)(code) : after(code); } function after(code) { return code === codes.eof || markdownLineEnding(code) ? ok2(code) : nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/block-quote.js var blockQuote = { name: "blockQuote", tokenize: tokenizeBlockQuoteStart, continuation: { tokenize: tokenizeBlockQuoteContinuation }, exit }; function tokenizeBlockQuoteStart(effects, ok2, nok) { const self = this; return start; function start(code) { if (code === codes.greaterThan) { const state = self.containerState; ok(state, "expected `containerState` to be defined in container"); if (!state.open) { effects.enter(types.blockQuote, { _container: true }); state.open = true; } effects.enter(types.blockQuotePrefix); effects.enter(types.blockQuoteMarker); effects.consume(code); effects.exit(types.blockQuoteMarker); return after; } return nok(code); } function after(code) { if (markdownSpace(code)) { effects.enter(types.blockQuotePrefixWhitespace); effects.consume(code); effects.exit(types.blockQuotePrefixWhitespace); effects.exit(types.blockQuotePrefix); return ok2; } effects.exit(types.blockQuotePrefix); return ok2(code); } } function tokenizeBlockQuoteContinuation(effects, ok2, nok) { const self = this; return contStart; function contStart(code) { if (markdownSpace(code)) { ok( self.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return factorySpace( effects, contBefore, types.linePrefix, self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize )(code); } return contBefore(code); } function contBefore(code) { return effects.attempt(blockQuote, ok2, nok)(code); } } function exit(effects) { effects.exit(types.blockQuote); } // node_modules/micromark-core-commonmark/dev/lib/character-escape.js var characterEscape = { name: "characterEscape", tokenize: tokenizeCharacterEscape }; function tokenizeCharacterEscape(effects, ok2, nok) { return start; function start(code) { ok(code === codes.backslash, "expected `\\`"); effects.enter(types.characterEscape); effects.enter(types.escapeMarker); effects.consume(code); effects.exit(types.escapeMarker); return inside; } function inside(code) { if (asciiPunctuation(code)) { effects.enter(types.characterEscapeValue); effects.consume(code); effects.exit(types.characterEscapeValue); effects.exit(types.characterEscape); return ok2; } return nok(code); } } // node_modules/decode-named-character-reference/index.dom.js var element = document.createElement("i"); function decodeNamedCharacterReference(value) { const characterReference2 = "&" + value + ";"; element.innerHTML = characterReference2; const char = element.textContent; if (char.charCodeAt(char.length - 1) === 59 && value !== "semi") { return false; } return char === characterReference2 ? false : char; } // node_modules/micromark-core-commonmark/dev/lib/character-reference.js var characterReference = { name: "characterReference", tokenize: tokenizeCharacterReference }; function tokenizeCharacterReference(effects, ok2, nok) { const self = this; let size = 0; let max; let test; return start; function start(code) { ok(code === codes.ampersand, "expected `&`"); effects.enter(types.characterReference); effects.enter(types.characterReferenceMarker); effects.consume(code); effects.exit(types.characterReferenceMarker); return open; } function open(code) { if (code === codes.numberSign) { effects.enter(types.characterReferenceMarkerNumeric); effects.consume(code); effects.exit(types.characterReferenceMarkerNumeric); return numeric; } effects.enter(types.characterReferenceValue); max = constants.characterReferenceNamedSizeMax; test = asciiAlphanumeric; return value(code); } function numeric(code) { if (code === codes.uppercaseX || code === codes.lowercaseX) { effects.enter(types.characterReferenceMarkerHexadecimal); effects.consume(code); effects.exit(types.characterReferenceMarkerHexadecimal); effects.enter(types.characterReferenceValue); max = constants.characterReferenceHexadecimalSizeMax; test = asciiHexDigit; return value; } effects.enter(types.characterReferenceValue); max = constants.characterReferenceDecimalSizeMax; test = asciiDigit; return value(code); } function value(code) { if (code === codes.semicolon && size) { const token = effects.exit(types.characterReferenceValue); if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) { return nok(code); } effects.enter(types.characterReferenceMarker); effects.consume(code); effects.exit(types.characterReferenceMarker); effects.exit(types.characterReference); return ok2; } if (test(code) && size++ < max) { effects.consume(code); return value; } return nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/code-fenced.js var nonLazyContinuation = { tokenize: tokenizeNonLazyContinuation, partial: true }; var codeFenced = { name: "codeFenced", tokenize: tokenizeCodeFenced, concrete: true }; function tokenizeCodeFenced(effects, ok2, nok) { const self = this; const closeStart = { tokenize: tokenizeCloseStart, partial: true }; let initialPrefix = 0; let sizeOpen = 0; let marker; return start; function start(code) { return beforeSequenceOpen(code); } function beforeSequenceOpen(code) { ok( code === codes.graveAccent || code === codes.tilde, "expected `` ` `` or `~`" ); const tail = self.events[self.events.length - 1]; initialPrefix = tail && tail[1].type === types.linePrefix ? tail[2].sliceSerialize(tail[1], true).length : 0; marker = code; effects.enter(types.codeFenced); effects.enter(types.codeFencedFence); effects.enter(types.codeFencedFenceSequence); return sequenceOpen(code); } function sequenceOpen(code) { if (code === marker) { sizeOpen++; effects.consume(code); return sequenceOpen; } if (sizeOpen < constants.codeFencedSequenceSizeMin) { return nok(code); } effects.exit(types.codeFencedFenceSequence); return markdownSpace(code) ? factorySpace(effects, infoBefore, types.whitespace)(code) : infoBefore(code); } function infoBefore(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.codeFencedFence); return self.interrupt ? ok2(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); } effects.enter(types.codeFencedFenceInfo); effects.enter(types.chunkString, { contentType: constants.contentTypeString }); return info(code); } function info(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.chunkString); effects.exit(types.codeFencedFenceInfo); return infoBefore(code); } if (markdownSpace(code)) { effects.exit(types.chunkString); effects.exit(types.codeFencedFenceInfo); return factorySpace(effects, metaBefore, types.whitespace)(code); } if (code === codes.graveAccent && code === marker) { return nok(code); } effects.consume(code); return info; } function metaBefore(code) { if (code === codes.eof || markdownLineEnding(code)) { return infoBefore(code); } effects.enter(types.codeFencedFenceMeta); effects.enter(types.chunkString, { contentType: constants.contentTypeString }); return meta(code); } function meta(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.chunkString); effects.exit(types.codeFencedFenceMeta); return infoBefore(code); } if (code === codes.graveAccent && code === marker) { return nok(code); } effects.consume(code); return meta; } function atNonLazyBreak(code) { ok(markdownLineEnding(code), "expected eol"); return effects.attempt(closeStart, after, contentBefore)(code); } function contentBefore(code) { ok(markdownLineEnding(code), "expected eol"); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return contentStart; } function contentStart(code) { return initialPrefix > 0 && markdownSpace(code) ? factorySpace( effects, beforeContentChunk, types.linePrefix, initialPrefix + 1 )(code) : beforeContentChunk(code); } function beforeContentChunk(code) { if (code === codes.eof || markdownLineEnding(code)) { return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); } effects.enter(types.codeFlowValue); return contentChunk(code); } function contentChunk(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.codeFlowValue); return beforeContentChunk(code); } effects.consume(code); return contentChunk; } function after(code) { effects.exit(types.codeFenced); return ok2(code); } function tokenizeCloseStart(effects2, ok3, nok2) { let size = 0; return startBefore; function startBefore(code) { ok(markdownLineEnding(code), "expected eol"); effects2.enter(types.lineEnding); effects2.consume(code); effects2.exit(types.lineEnding); return start2; } function start2(code) { ok( self.parser.constructs.disable.null, "expected `disable.null` to be populated" ); effects2.enter(types.codeFencedFence); return markdownSpace(code) ? factorySpace( effects2, beforeSequenceClose, types.linePrefix, self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize )(code) : beforeSequenceClose(code); } function beforeSequenceClose(code) { if (code === marker) { effects2.enter(types.codeFencedFenceSequence); return sequenceClose(code); } return nok2(code); } function sequenceClose(code) { if (code === marker) { size++; effects2.consume(code); return sequenceClose; } if (size >= sizeOpen) { effects2.exit(types.codeFencedFenceSequence); return markdownSpace(code) ? factorySpace(effects2, sequenceCloseAfter, types.whitespace)(code) : sequenceCloseAfter(code); } return nok2(code); } function sequenceCloseAfter(code) { if (code === codes.eof || markdownLineEnding(code)) { effects2.exit(types.codeFencedFence); return ok3(code); } return nok2(code); } } } function tokenizeNonLazyContinuation(effects, ok2, nok) { const self = this; return start; function start(code) { if (code === codes.eof) { return nok(code); } ok(markdownLineEnding(code), "expected eol"); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return lineStart; } function lineStart(code) { return self.parser.lazy[self.now().line] ? nok(code) : ok2(code); } } // node_modules/micromark-core-commonmark/dev/lib/code-indented.js var codeIndented = { name: "codeIndented", tokenize: tokenizeCodeIndented }; var furtherStart = { tokenize: tokenizeFurtherStart, partial: true }; function tokenizeCodeIndented(effects, ok2, nok) { const self = this; return start; function start(code) { ok(markdownSpace(code)); effects.enter(types.codeIndented); return factorySpace( effects, afterPrefix, types.linePrefix, constants.tabSize + 1 )(code); } function afterPrefix(code) { const tail = self.events[self.events.length - 1]; return tail && tail[1].type === types.linePrefix && tail[2].sliceSerialize(tail[1], true).length >= constants.tabSize ? atBreak(code) : nok(code); } function atBreak(code) { if (code === codes.eof) { return after(code); } if (markdownLineEnding(code)) { return effects.attempt(furtherStart, atBreak, after)(code); } effects.enter(types.codeFlowValue); return inside(code); } function inside(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.codeFlowValue); return atBreak(code); } effects.consume(code); return inside; } function after(code) { effects.exit(types.codeIndented); return ok2(code); } } function tokenizeFurtherStart(effects, ok2, nok) { const self = this; return furtherStart2; function furtherStart2(code) { if (self.parser.lazy[self.now().line]) { return nok(code); } if (markdownLineEnding(code)) { effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return furtherStart2; } return factorySpace( effects, afterPrefix, types.linePrefix, constants.tabSize + 1 )(code); } function afterPrefix(code) { const tail = self.events[self.events.length - 1]; return tail && tail[1].type === types.linePrefix && tail[2].sliceSerialize(tail[1], true).length >= constants.tabSize ? ok2(code) : markdownLineEnding(code) ? furtherStart2(code) : nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/code-text.js var codeText = { name: "codeText", tokenize: tokenizeCodeText, resolve: resolveCodeText, previous }; function resolveCodeText(events) { let tailExitIndex = events.length - 4; let headEnterIndex = 3; let index2; let enter; if ((events[headEnterIndex][1].type === types.lineEnding || events[headEnterIndex][1].type === "space") && (events[tailExitIndex][1].type === types.lineEnding || events[tailExitIndex][1].type === "space")) { index2 = headEnterIndex; while (++index2 < tailExitIndex) { if (events[index2][1].type === types.codeTextData) { events[headEnterIndex][1].type = types.codeTextPadding; events[tailExitIndex][1].type = types.codeTextPadding; headEnterIndex += 2; tailExitIndex -= 2; break; } } } index2 = headEnterIndex - 1; tailExitIndex++; while (++index2 <= tailExitIndex) { if (enter === void 0) { if (index2 !== tailExitIndex && events[index2][1].type !== types.lineEnding) { enter = index2; } } else if (index2 === tailExitIndex || events[index2][1].type === types.lineEnding) { events[enter][1].type = types.codeTextData; if (index2 !== enter + 2) { events[enter][1].end = events[index2 - 1][1].end; events.splice(enter + 2, index2 - enter - 2); tailExitIndex -= index2 - enter - 2; index2 = enter + 2; } enter = void 0; } } return events; } function previous(code) { return code !== codes.graveAccent || this.events[this.events.length - 1][1].type === types.characterEscape; } function tokenizeCodeText(effects, ok2, nok) { const self = this; let sizeOpen = 0; let size; let token; return start; function start(code) { ok(code === codes.graveAccent, "expected `` ` ``"); ok(previous.call(self, self.previous), "expected correct previous"); effects.enter(types.codeText); effects.enter(types.codeTextSequence); return sequenceOpen(code); } function sequenceOpen(code) { if (code === codes.graveAccent) { effects.consume(code); sizeOpen++; return sequenceOpen; } effects.exit(types.codeTextSequence); return between(code); } function between(code) { if (code === codes.eof) { return nok(code); } if (code === codes.space) { effects.enter("space"); effects.consume(code); effects.exit("space"); return between; } if (code === codes.graveAccent) { token = effects.enter(types.codeTextSequence); size = 0; return sequenceClose(code); } if (markdownLineEnding(code)) { effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return between; } effects.enter(types.codeTextData); return data(code); } function data(code) { if (code === codes.eof || code === codes.space || code === codes.graveAccent || markdownLineEnding(code)) { effects.exit(types.codeTextData); return between(code); } effects.consume(code); return data; } function sequenceClose(code) { if (code === codes.graveAccent) { effects.consume(code); size++; return sequenceClose; } if (size === sizeOpen) { effects.exit(types.codeTextSequence); effects.exit(types.codeText); return ok2(code); } token.type = types.codeTextData; return data(code); } } // node_modules/micromark-util-subtokenize/dev/index.js function subtokenize(events) { const jumps = {}; let index2 = -1; let event; let lineIndex; let otherIndex; let otherEvent; let parameters; let subevents; let more; while (++index2 < events.length) { while (index2 in jumps) { index2 = jumps[index2]; } event = events[index2]; if (index2 && event[1].type === types.chunkFlow && events[index2 - 1][1].type === types.listItemPrefix) { ok(event[1]._tokenizer, "expected `_tokenizer` on subtokens"); subevents = event[1]._tokenizer.events; otherIndex = 0; if (otherIndex < subevents.length && subevents[otherIndex][1].type === types.lineEndingBlank) { otherIndex += 2; } if (otherIndex < subevents.length && subevents[otherIndex][1].type === types.content) { while (++otherIndex < subevents.length) { if (subevents[otherIndex][1].type === types.content) { break; } if (subevents[otherIndex][1].type === types.chunkText) { subevents[otherIndex][1]._isInFirstContentOfListItem = true; otherIndex++; } } } } if (event[0] === "enter") { if (event[1].contentType) { Object.assign(jumps, subcontent(events, index2)); index2 = jumps[index2]; more = true; } } else if (event[1]._container) { otherIndex = index2; lineIndex = void 0; while (otherIndex--) { otherEvent = events[otherIndex]; if (otherEvent[1].type === types.lineEnding || otherEvent[1].type === types.lineEndingBlank) { if (otherEvent[0] === "enter") { if (lineIndex) { events[lineIndex][1].type = types.lineEndingBlank; } otherEvent[1].type = types.lineEnding; lineIndex = otherIndex; } } else { break; } } if (lineIndex) { event[1].end = Object.assign({}, events[lineIndex][1].start); parameters = events.slice(lineIndex, index2); parameters.unshift(event); splice(events, lineIndex, index2 - lineIndex + 1, parameters); } } } return !more; } function subcontent(events, eventIndex) { const token = events[eventIndex][1]; const context = events[eventIndex][2]; let startPosition = eventIndex - 1; const startPositions = []; ok(token.contentType, "expected `contentType` on subtokens"); const tokenizer = token._tokenizer || context.parser[token.contentType](token.start); const childEvents = tokenizer.events; const jumps = []; const gaps = {}; let stream; let previous2; let index2 = -1; let current = token; let adjust = 0; let start = 0; const breaks = [start]; while (current) { while (events[++startPosition][1] !== current) { } ok( !previous2 || current.previous === previous2, "expected previous to match" ); ok(!previous2 || previous2.next === current, "expected next to match"); startPositions.push(startPosition); if (!current._tokenizer) { stream = context.sliceStream(current); if (!current.next) { stream.push(codes.eof); } if (previous2) { tokenizer.defineSkip(current.start); } if (current._isInFirstContentOfListItem) { tokenizer._gfmTasklistFirstContentOfListItem = true; } tokenizer.write(stream); if (current._isInFirstContentOfListItem) { tokenizer._gfmTasklistFirstContentOfListItem = void 0; } } previous2 = current; current = current.next; } current = token; while (++index2 < childEvents.length) { if ( // Find a void token that includes a break. childEvents[index2][0] === "exit" && childEvents[index2 - 1][0] === "enter" && childEvents[index2][1].type === childEvents[index2 - 1][1].type && childEvents[index2][1].start.line !== childEvents[index2][1].end.line ) { ok(current, "expected a current token"); start = index2 + 1; breaks.push(start); current._tokenizer = void 0; current.previous = void 0; current = current.next; } } tokenizer.events = []; if (current) { current._tokenizer = void 0; current.previous = void 0; ok(!current.next, "expected no next token"); } else { breaks.pop(); } index2 = breaks.length; while (index2--) { const slice = childEvents.slice(breaks[index2], breaks[index2 + 1]); const start2 = startPositions.pop(); ok(start2 !== void 0, "expected a start position when splicing"); jumps.unshift([start2, start2 + slice.length - 1]); splice(events, start2, 2, slice); } index2 = -1; while (++index2 < jumps.length) { gaps[adjust + jumps[index2][0]] = adjust + jumps[index2][1]; adjust += jumps[index2][1] - jumps[index2][0] - 1; } return gaps; } // node_modules/micromark-core-commonmark/dev/lib/content.js var content2 = { tokenize: tokenizeContent, resolve: resolveContent }; var continuationConstruct = { tokenize: tokenizeContinuation, partial: true }; function resolveContent(events) { subtokenize(events); return events; } function tokenizeContent(effects, ok2) { let previous2; return chunkStart; function chunkStart(code) { ok( code !== codes.eof && !markdownLineEnding(code), "expected no eof or eol" ); effects.enter(types.content); previous2 = effects.enter(types.chunkContent, { contentType: constants.contentTypeContent }); return chunkInside(code); } function chunkInside(code) { if (code === codes.eof) { return contentEnd(code); } if (markdownLineEnding(code)) { return effects.check( continuationConstruct, contentContinue, contentEnd )(code); } effects.consume(code); return chunkInside; } function contentEnd(code) { effects.exit(types.chunkContent); effects.exit(types.content); return ok2(code); } function contentContinue(code) { ok(markdownLineEnding(code), "expected eol"); effects.consume(code); effects.exit(types.chunkContent); ok(previous2, "expected previous token"); previous2.next = effects.enter(types.chunkContent, { contentType: constants.contentTypeContent, previous: previous2 }); previous2 = previous2.next; return chunkInside; } } function tokenizeContinuation(effects, ok2, nok) { const self = this; return startLookahead; function startLookahead(code) { ok(markdownLineEnding(code), "expected a line ending"); effects.exit(types.chunkContent); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return factorySpace(effects, prefixed, types.linePrefix); } function prefixed(code) { if (code === codes.eof || markdownLineEnding(code)) { return nok(code); } ok( self.parser.constructs.disable.null, "expected `disable.null` to be populated" ); const tail = self.events[self.events.length - 1]; if (!self.parser.constructs.disable.null.includes("codeIndented") && tail && tail[1].type === types.linePrefix && tail[2].sliceSerialize(tail[1], true).length >= constants.tabSize) { return ok2(code); } return effects.interrupt(self.parser.constructs.flow, nok, ok2)(code); } } // node_modules/micromark-factory-destination/dev/index.js function factoryDestination(effects, ok2, nok, type, literalType, literalMarkerType, rawType, stringType, max) { const limit = max || Number.POSITIVE_INFINITY; let balance = 0; return start; function start(code) { if (code === codes.lessThan) { effects.enter(type); effects.enter(literalType); effects.enter(literalMarkerType); effects.consume(code); effects.exit(literalMarkerType); return enclosedBefore; } if (code === codes.eof || code === codes.space || code === codes.rightParenthesis || asciiControl(code)) { return nok(code); } effects.enter(type); effects.enter(rawType); effects.enter(stringType); effects.enter(types.chunkString, { contentType: constants.contentTypeString }); return raw(code); } function enclosedBefore(code) { if (code === codes.greaterThan) { effects.enter(literalMarkerType); effects.consume(code); effects.exit(literalMarkerType); effects.exit(literalType); effects.exit(type); return ok2; } effects.enter(stringType); effects.enter(types.chunkString, { contentType: constants.contentTypeString }); return enclosed(code); } function enclosed(code) { if (code === codes.greaterThan) { effects.exit(types.chunkString); effects.exit(stringType); return enclosedBefore(code); } if (code === codes.eof || code === codes.lessThan || markdownLineEnding(code)) { return nok(code); } effects.consume(code); return code === codes.backslash ? enclosedEscape : enclosed; } function enclosedEscape(code) { if (code === codes.lessThan || code === codes.greaterThan || code === codes.backslash) { effects.consume(code); return enclosed; } return enclosed(code); } function raw(code) { if (!balance && (code === codes.eof || code === codes.rightParenthesis || markdownLineEndingOrSpace(code))) { effects.exit(types.chunkString); effects.exit(stringType); effects.exit(rawType); effects.exit(type); return ok2(code); } if (balance < limit && code === codes.leftParenthesis) { effects.consume(code); balance++; return raw; } if (code === codes.rightParenthesis) { effects.consume(code); balance--; return raw; } if (code === codes.eof || code === codes.space || code === codes.leftParenthesis || asciiControl(code)) { return nok(code); } effects.consume(code); return code === codes.backslash ? rawEscape : raw; } function rawEscape(code) { if (code === codes.leftParenthesis || code === codes.rightParenthesis || code === codes.backslash) { effects.consume(code); return raw; } return raw(code); } } // node_modules/micromark-factory-label/dev/index.js function factoryLabel(effects, ok2, nok, type, markerType, stringType) { const self = this; let size = 0; let seen; return start; function start(code) { ok(code === codes.leftSquareBracket, "expected `[`"); effects.enter(type); effects.enter(markerType); effects.consume(code); effects.exit(markerType); effects.enter(stringType); return atBreak; } function atBreak(code) { if (size > constants.linkReferenceSizeMax || code === codes.eof || code === codes.leftSquareBracket || code === codes.rightSquareBracket && !seen || // To do: remove in the future once we’ve switched from // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`, // which doesn’t need this. // Hidden footnotes hook. /* c8 ignore next 3 */ code === codes.caret && !size && "_hiddenFootnoteSupport" in self.parser.constructs) { return nok(code); } if (code === codes.rightSquareBracket) { effects.exit(stringType); effects.enter(markerType); effects.consume(code); effects.exit(markerType); effects.exit(type); return ok2; } if (markdownLineEnding(code)) { effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return atBreak; } effects.enter(types.chunkString, { contentType: constants.contentTypeString }); return labelInside(code); } function labelInside(code) { if (code === codes.eof || code === codes.leftSquareBracket || code === codes.rightSquareBracket || markdownLineEnding(code) || size++ > constants.linkReferenceSizeMax) { effects.exit(types.chunkString); return atBreak(code); } effects.consume(code); if (!seen) seen = !markdownSpace(code); return code === codes.backslash ? labelEscape : labelInside; } function labelEscape(code) { if (code === codes.leftSquareBracket || code === codes.backslash || code === codes.rightSquareBracket) { effects.consume(code); size++; return labelInside; } return labelInside(code); } } // node_modules/micromark-factory-title/dev/index.js function factoryTitle(effects, ok2, nok, type, markerType, stringType) { let marker; return start; function start(code) { if (code === codes.quotationMark || code === codes.apostrophe || code === codes.leftParenthesis) { effects.enter(type); effects.enter(markerType); effects.consume(code); effects.exit(markerType); marker = code === codes.leftParenthesis ? codes.rightParenthesis : code; return begin; } return nok(code); } function begin(code) { if (code === marker) { effects.enter(markerType); effects.consume(code); effects.exit(markerType); effects.exit(type); return ok2; } effects.enter(stringType); return atBreak(code); } function atBreak(code) { if (code === marker) { effects.exit(stringType); return begin(marker); } if (code === codes.eof) { return nok(code); } if (markdownLineEnding(code)) { effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return factorySpace(effects, atBreak, types.linePrefix); } effects.enter(types.chunkString, { contentType: constants.contentTypeString }); return inside(code); } function inside(code) { if (code === marker || code === codes.eof || markdownLineEnding(code)) { effects.exit(types.chunkString); return atBreak(code); } effects.consume(code); return code === codes.backslash ? escape : inside; } function escape(code) { if (code === marker || code === codes.backslash) { effects.consume(code); return inside; } return inside(code); } } // node_modules/micromark-factory-whitespace/dev/index.js function factoryWhitespace(effects, ok2) { let seen; return start; function start(code) { if (markdownLineEnding(code)) { effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); seen = true; return start; } if (markdownSpace(code)) { return factorySpace( effects, start, seen ? types.linePrefix : types.lineSuffix )(code); } return ok2(code); } } // node_modules/micromark-util-symbol/values.js var values = ( /** @type {const} */ { ht: " ", lf: "\n", cr: "\r", space: " ", exclamationMark: "!", quotationMark: '"', numberSign: "#", dollarSign: "$", percentSign: "%", ampersand: "&", apostrophe: "'", leftParenthesis: "(", rightParenthesis: ")", asterisk: "*", plusSign: "+", comma: ",", dash: "-", dot: ".", slash: "/", digit0: "0", digit1: "1", digit2: "2", digit3: "3", digit4: "4", digit5: "5", digit6: "6", digit7: "7", digit8: "8", digit9: "9", colon: ":", semicolon: ";", lessThan: "<", equalsTo: "=", greaterThan: ">", questionMark: "?", atSign: "@", uppercaseA: "A", uppercaseB: "B", uppercaseC: "C", uppercaseD: "D", uppercaseE: "E", uppercaseF: "F", uppercaseG: "G", uppercaseH: "H", uppercaseI: "I", uppercaseJ: "J", uppercaseK: "K", uppercaseL: "L", uppercaseM: "M", uppercaseN: "N", uppercaseO: "O", uppercaseP: "P", uppercaseQ: "Q", uppercaseR: "R", uppercaseS: "S", uppercaseT: "T", uppercaseU: "U", uppercaseV: "V", uppercaseW: "W", uppercaseX: "X", uppercaseY: "Y", uppercaseZ: "Z", leftSquareBracket: "[", backslash: "\\", rightSquareBracket: "]", caret: "^", underscore: "_", graveAccent: "`", lowercaseA: "a", lowercaseB: "b", lowercaseC: "c", lowercaseD: "d", lowercaseE: "e", lowercaseF: "f", lowercaseG: "g", lowercaseH: "h", lowercaseI: "i", lowercaseJ: "j", lowercaseK: "k", lowercaseL: "l", lowercaseM: "m", lowercaseN: "n", lowercaseO: "o", lowercaseP: "p", lowercaseQ: "q", lowercaseR: "r", lowercaseS: "s", lowercaseT: "t", lowercaseU: "u", lowercaseV: "v", lowercaseW: "w", lowercaseX: "x", lowercaseY: "y", lowercaseZ: "z", leftCurlyBrace: "{", verticalBar: "|", rightCurlyBrace: "}", tilde: "~", replacementCharacter: "�" } ); // node_modules/micromark-util-normalize-identifier/dev/index.js function normalizeIdentifier(value) { return value.replace(/[\t\n\r ]+/g, values.space).replace(/^ | $/g, "").toLowerCase().toUpperCase(); } // node_modules/micromark-core-commonmark/dev/lib/definition.js var definition = { name: "definition", tokenize: tokenizeDefinition }; var titleBefore = { tokenize: tokenizeTitleBefore, partial: true }; function tokenizeDefinition(effects, ok2, nok) { const self = this; let identifier; return start; function start(code) { effects.enter(types.definition); return before(code); } function before(code) { ok(code === codes.leftSquareBracket, "expected `[`"); return factoryLabel.call( self, effects, labelAfter, // Note: we don’t need to reset the way `markdown-rs` does. nok, types.definitionLabel, types.definitionLabelMarker, types.definitionLabelString )(code); } function labelAfter(code) { identifier = normalizeIdentifier( self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) ); if (code === codes.colon) { effects.enter(types.definitionMarker); effects.consume(code); effects.exit(types.definitionMarker); return markerAfter; } return nok(code); } function markerAfter(code) { return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code); } function destinationBefore(code) { return factoryDestination( effects, destinationAfter, // Note: we don’t need to reset the way `markdown-rs` does. nok, types.definitionDestination, types.definitionDestinationLiteral, types.definitionDestinationLiteralMarker, types.definitionDestinationRaw, types.definitionDestinationString )(code); } function destinationAfter(code) { return effects.attempt(titleBefore, after, after)(code); } function after(code) { return markdownSpace(code) ? factorySpace(effects, afterWhitespace, types.whitespace)(code) : afterWhitespace(code); } function afterWhitespace(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.definition); self.parser.defined.push(identifier); return ok2(code); } return nok(code); } } function tokenizeTitleBefore(effects, ok2, nok) { return titleBefore2; function titleBefore2(code) { return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code); } function beforeMarker(code) { return factoryTitle( effects, titleAfter, nok, types.definitionTitle, types.definitionTitleMarker, types.definitionTitleString )(code); } function titleAfter(code) { return markdownSpace(code) ? factorySpace( effects, titleAfterOptionalWhitespace, types.whitespace )(code) : titleAfterOptionalWhitespace(code); } function titleAfterOptionalWhitespace(code) { return code === codes.eof || markdownLineEnding(code) ? ok2(code) : nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js var hardBreakEscape = { name: "hardBreakEscape", tokenize: tokenizeHardBreakEscape }; function tokenizeHardBreakEscape(effects, ok2, nok) { return start; function start(code) { ok(code === codes.backslash, "expected `\\`"); effects.enter(types.hardBreakEscape); effects.consume(code); return after; } function after(code) { if (markdownLineEnding(code)) { effects.exit(types.hardBreakEscape); return ok2(code); } return nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/heading-atx.js var headingAtx = { name: "headingAtx", tokenize: tokenizeHeadingAtx, resolve: resolveHeadingAtx }; function resolveHeadingAtx(events, context) { let contentEnd = events.length - 2; let contentStart = 3; let content3; let text3; if (events[contentStart][1].type === types.whitespace) { contentStart += 2; } if (contentEnd - 2 > contentStart && events[contentEnd][1].type === types.whitespace) { contentEnd -= 2; } if (events[contentEnd][1].type === types.atxHeadingSequence && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === types.whitespace)) { contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; } if (contentEnd > contentStart) { content3 = { type: types.atxHeadingText, start: events[contentStart][1].start, end: events[contentEnd][1].end }; text3 = { type: types.chunkText, start: events[contentStart][1].start, end: events[contentEnd][1].end, contentType: constants.contentTypeText }; splice(events, contentStart, contentEnd - contentStart + 1, [ ["enter", content3, context], ["enter", text3, context], ["exit", text3, context], ["exit", content3, context] ]); } return events; } function tokenizeHeadingAtx(effects, ok2, nok) { let size = 0; return start; function start(code) { effects.enter(types.atxHeading); return before(code); } function before(code) { ok(code === codes.numberSign, "expected `#`"); effects.enter(types.atxHeadingSequence); return sequenceOpen(code); } function sequenceOpen(code) { if (code === codes.numberSign && size++ < constants.atxHeadingOpeningFenceSizeMax) { effects.consume(code); return sequenceOpen; } if (code === codes.eof || markdownLineEndingOrSpace(code)) { effects.exit(types.atxHeadingSequence); return atBreak(code); } return nok(code); } function atBreak(code) { if (code === codes.numberSign) { effects.enter(types.atxHeadingSequence); return sequenceFurther(code); } if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.atxHeading); return ok2(code); } if (markdownSpace(code)) { return factorySpace(effects, atBreak, types.whitespace)(code); } effects.enter(types.atxHeadingText); return data(code); } function sequenceFurther(code) { if (code === codes.numberSign) { effects.consume(code); return sequenceFurther; } effects.exit(types.atxHeadingSequence); return atBreak(code); } function data(code) { if (code === codes.eof || code === codes.numberSign || markdownLineEndingOrSpace(code)) { effects.exit(types.atxHeadingText); return atBreak(code); } effects.consume(code); return data; } } // node_modules/micromark-util-html-tag-name/index.js var htmlBlockNames = [ "address", "article", "aside", "base", "basefont", "blockquote", "body", "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", "nav", "noframes", "ol", "optgroup", "option", "p", "param", "search", "section", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "title", "tr", "track", "ul" ]; var htmlRawNames = ["pre", "script", "style", "textarea"]; // node_modules/micromark-core-commonmark/dev/lib/html-flow.js var htmlFlow = { name: "htmlFlow", tokenize: tokenizeHtmlFlow, resolveTo: resolveToHtmlFlow, concrete: true }; var blankLineBefore = { tokenize: tokenizeBlankLineBefore, partial: true }; var nonLazyContinuationStart = { tokenize: tokenizeNonLazyContinuationStart, partial: true }; function resolveToHtmlFlow(events) { let index2 = events.length; while (index2--) { if (events[index2][0] === "enter" && events[index2][1].type === types.htmlFlow) { break; } } if (index2 > 1 && events[index2 - 2][1].type === types.linePrefix) { events[index2][1].start = events[index2 - 2][1].start; events[index2 + 1][1].start = events[index2 - 2][1].start; events.splice(index2 - 2, 2); } return events; } function tokenizeHtmlFlow(effects, ok2, nok) { const self = this; let marker; let closingTag; let buffer; let index2; let markerB; return start; function start(code) { return before(code); } function before(code) { ok(code === codes.lessThan, "expected `<`"); effects.enter(types.htmlFlow); effects.enter(types.htmlFlowData); effects.consume(code); return open; } function open(code) { if (code === codes.exclamationMark) { effects.consume(code); return declarationOpen; } if (code === codes.slash) { effects.consume(code); closingTag = true; return tagCloseStart; } if (code === codes.questionMark) { effects.consume(code); marker = constants.htmlInstruction; return self.interrupt ? ok2 : continuationDeclarationInside; } if (asciiAlpha(code)) { effects.consume(code); buffer = String.fromCharCode(code); return tagName; } return nok(code); } function declarationOpen(code) { if (code === codes.dash) { effects.consume(code); marker = constants.htmlComment; return commentOpenInside; } if (code === codes.leftSquareBracket) { effects.consume(code); marker = constants.htmlCdata; index2 = 0; return cdataOpenInside; } if (asciiAlpha(code)) { effects.consume(code); marker = constants.htmlDeclaration; return self.interrupt ? ok2 : continuationDeclarationInside; } return nok(code); } function commentOpenInside(code) { if (code === codes.dash) { effects.consume(code); return self.interrupt ? ok2 : continuationDeclarationInside; } return nok(code); } function cdataOpenInside(code) { const value = constants.cdataOpeningString; if (code === value.charCodeAt(index2++)) { effects.consume(code); if (index2 === value.length) { return self.interrupt ? ok2 : continuation; } return cdataOpenInside; } return nok(code); } function tagCloseStart(code) { if (asciiAlpha(code)) { effects.consume(code); buffer = String.fromCharCode(code); return tagName; } return nok(code); } function tagName(code) { if (code === codes.eof || code === codes.slash || code === codes.greaterThan || markdownLineEndingOrSpace(code)) { const slash = code === codes.slash; const name = buffer.toLowerCase(); if (!slash && !closingTag && htmlRawNames.includes(name)) { marker = constants.htmlRaw; return self.interrupt ? ok2(code) : continuation(code); } if (htmlBlockNames.includes(buffer.toLowerCase())) { marker = constants.htmlBasic; if (slash) { effects.consume(code); return basicSelfClosing; } return self.interrupt ? ok2(code) : continuation(code); } marker = constants.htmlComplete; return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code); } if (code === codes.dash || asciiAlphanumeric(code)) { effects.consume(code); buffer += String.fromCharCode(code); return tagName; } return nok(code); } function basicSelfClosing(code) { if (code === codes.greaterThan) { effects.consume(code); return self.interrupt ? ok2 : continuation; } return nok(code); } function completeClosingTagAfter(code) { if (markdownSpace(code)) { effects.consume(code); return completeClosingTagAfter; } return completeEnd(code); } function completeAttributeNameBefore(code) { if (code === codes.slash) { effects.consume(code); return completeEnd; } if (code === codes.colon || code === codes.underscore || asciiAlpha(code)) { effects.consume(code); return completeAttributeName; } if (markdownSpace(code)) { effects.consume(code); return completeAttributeNameBefore; } return completeEnd(code); } function completeAttributeName(code) { if (code === codes.dash || code === codes.dot || code === codes.colon || code === codes.underscore || asciiAlphanumeric(code)) { effects.consume(code); return completeAttributeName; } return completeAttributeNameAfter(code); } function completeAttributeNameAfter(code) { if (code === codes.equalsTo) { effects.consume(code); return completeAttributeValueBefore; } if (markdownSpace(code)) { effects.consume(code); return completeAttributeNameAfter; } return completeAttributeNameBefore(code); } function completeAttributeValueBefore(code) { if (code === codes.eof || code === codes.lessThan || code === codes.equalsTo || code === codes.greaterThan || code === codes.graveAccent) { return nok(code); } if (code === codes.quotationMark || code === codes.apostrophe) { effects.consume(code); markerB = code; return completeAttributeValueQuoted; } if (markdownSpace(code)) { effects.consume(code); return completeAttributeValueBefore; } return completeAttributeValueUnquoted(code); } function completeAttributeValueQuoted(code) { if (code === markerB) { effects.consume(code); markerB = null; return completeAttributeValueQuotedAfter; } if (code === codes.eof || markdownLineEnding(code)) { return nok(code); } effects.consume(code); return completeAttributeValueQuoted; } function completeAttributeValueUnquoted(code) { if (code === codes.eof || code === codes.quotationMark || code === codes.apostrophe || code === codes.slash || code === codes.lessThan || code === codes.equalsTo || code === codes.greaterThan || code === codes.graveAccent || markdownLineEndingOrSpace(code)) { return completeAttributeNameAfter(code); } effects.consume(code); return completeAttributeValueUnquoted; } function completeAttributeValueQuotedAfter(code) { if (code === codes.slash || code === codes.greaterThan || markdownSpace(code)) { return completeAttributeNameBefore(code); } return nok(code); } function completeEnd(code) { if (code === codes.greaterThan) { effects.consume(code); return completeAfter; } return nok(code); } function completeAfter(code) { if (code === codes.eof || markdownLineEnding(code)) { return continuation(code); } if (markdownSpace(code)) { effects.consume(code); return completeAfter; } return nok(code); } function continuation(code) { if (code === codes.dash && marker === constants.htmlComment) { effects.consume(code); return continuationCommentInside; } if (code === codes.lessThan && marker === constants.htmlRaw) { effects.consume(code); return continuationRawTagOpen; } if (code === codes.greaterThan && marker === constants.htmlDeclaration) { effects.consume(code); return continuationClose; } if (code === codes.questionMark && marker === constants.htmlInstruction) { effects.consume(code); return continuationDeclarationInside; } if (code === codes.rightSquareBracket && marker === constants.htmlCdata) { effects.consume(code); return continuationCdataInside; } if (markdownLineEnding(code) && (marker === constants.htmlBasic || marker === constants.htmlComplete)) { effects.exit(types.htmlFlowData); return effects.check( blankLineBefore, continuationAfter, continuationStart )(code); } if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.htmlFlowData); return continuationStart(code); } effects.consume(code); return continuation; } function continuationStart(code) { return effects.check( nonLazyContinuationStart, continuationStartNonLazy, continuationAfter )(code); } function continuationStartNonLazy(code) { ok(markdownLineEnding(code)); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return continuationBefore; } function continuationBefore(code) { if (code === codes.eof || markdownLineEnding(code)) { return continuationStart(code); } effects.enter(types.htmlFlowData); return continuation(code); } function continuationCommentInside(code) { if (code === codes.dash) { effects.consume(code); return continuationDeclarationInside; } return continuation(code); } function continuationRawTagOpen(code) { if (code === codes.slash) { effects.consume(code); buffer = ""; return continuationRawEndTag; } return continuation(code); } function continuationRawEndTag(code) { if (code === codes.greaterThan) { const name = buffer.toLowerCase(); if (htmlRawNames.includes(name)) { effects.consume(code); return continuationClose; } return continuation(code); } if (asciiAlpha(code) && buffer.length < constants.htmlRawSizeMax) { effects.consume(code); buffer += String.fromCharCode(code); return continuationRawEndTag; } return continuation(code); } function continuationCdataInside(code) { if (code === codes.rightSquareBracket) { effects.consume(code); return continuationDeclarationInside; } return continuation(code); } function continuationDeclarationInside(code) { if (code === codes.greaterThan) { effects.consume(code); return continuationClose; } if (code === codes.dash && marker === constants.htmlComment) { effects.consume(code); return continuationDeclarationInside; } return continuation(code); } function continuationClose(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.htmlFlowData); return continuationAfter(code); } effects.consume(code); return continuationClose; } function continuationAfter(code) { effects.exit(types.htmlFlow); return ok2(code); } } function tokenizeNonLazyContinuationStart(effects, ok2, nok) { const self = this; return start; function start(code) { if (markdownLineEnding(code)) { effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return after; } return nok(code); } function after(code) { return self.parser.lazy[self.now().line] ? nok(code) : ok2(code); } } function tokenizeBlankLineBefore(effects, ok2, nok) { return start; function start(code) { ok(markdownLineEnding(code), "expected a line ending"); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return effects.attempt(blankLine, ok2, nok); } } // node_modules/micromark-core-commonmark/dev/lib/html-text.js var htmlText = { name: "htmlText", tokenize: tokenizeHtmlText }; function tokenizeHtmlText(effects, ok2, nok) { const self = this; let marker; let index2; let returnState; return start; function start(code) { ok(code === codes.lessThan, "expected `<`"); effects.enter(types.htmlText); effects.enter(types.htmlTextData); effects.consume(code); return open; } function open(code) { if (code === codes.exclamationMark) { effects.consume(code); return declarationOpen; } if (code === codes.slash) { effects.consume(code); return tagCloseStart; } if (code === codes.questionMark) { effects.consume(code); return instruction; } if (asciiAlpha(code)) { effects.consume(code); return tagOpen; } return nok(code); } function declarationOpen(code) { if (code === codes.dash) { effects.consume(code); return commentOpenInside; } if (code === codes.leftSquareBracket) { effects.consume(code); index2 = 0; return cdataOpenInside; } if (asciiAlpha(code)) { effects.consume(code); return declaration; } return nok(code); } function commentOpenInside(code) { if (code === codes.dash) { effects.consume(code); return commentEnd; } return nok(code); } function comment(code) { if (code === codes.eof) { return nok(code); } if (code === codes.dash) { effects.consume(code); return commentClose; } if (markdownLineEnding(code)) { returnState = comment; return lineEndingBefore(code); } effects.consume(code); return comment; } function commentClose(code) { if (code === codes.dash) { effects.consume(code); return commentEnd; } return comment(code); } function commentEnd(code) { return code === codes.greaterThan ? end(code) : code === codes.dash ? commentClose(code) : comment(code); } function cdataOpenInside(code) { const value = constants.cdataOpeningString; if (code === value.charCodeAt(index2++)) { effects.consume(code); return index2 === value.length ? cdata : cdataOpenInside; } return nok(code); } function cdata(code) { if (code === codes.eof) { return nok(code); } if (code === codes.rightSquareBracket) { effects.consume(code); return cdataClose; } if (markdownLineEnding(code)) { returnState = cdata; return lineEndingBefore(code); } effects.consume(code); return cdata; } function cdataClose(code) { if (code === codes.rightSquareBracket) { effects.consume(code); return cdataEnd; } return cdata(code); } function cdataEnd(code) { if (code === codes.greaterThan) { return end(code); } if (code === codes.rightSquareBracket) { effects.consume(code); return cdataEnd; } return cdata(code); } function declaration(code) { if (code === codes.eof || code === codes.greaterThan) { return end(code); } if (markdownLineEnding(code)) { returnState = declaration; return lineEndingBefore(code); } effects.consume(code); return declaration; } function instruction(code) { if (code === codes.eof) { return nok(code); } if (code === codes.questionMark) { effects.consume(code); return instructionClose; } if (markdownLineEnding(code)) { returnState = instruction; return lineEndingBefore(code); } effects.consume(code); return instruction; } function instructionClose(code) { return code === codes.greaterThan ? end(code) : instruction(code); } function tagCloseStart(code) { if (asciiAlpha(code)) { effects.consume(code); return tagClose; } return nok(code); } function tagClose(code) { if (code === codes.dash || asciiAlphanumeric(code)) { effects.consume(code); return tagClose; } return tagCloseBetween(code); } function tagCloseBetween(code) { if (markdownLineEnding(code)) { returnState = tagCloseBetween; return lineEndingBefore(code); } if (markdownSpace(code)) { effects.consume(code); return tagCloseBetween; } return end(code); } function tagOpen(code) { if (code === codes.dash || asciiAlphanumeric(code)) { effects.consume(code); return tagOpen; } if (code === codes.slash || code === codes.greaterThan || markdownLineEndingOrSpace(code)) { return tagOpenBetween(code); } return nok(code); } function tagOpenBetween(code) { if (code === codes.slash) { effects.consume(code); return end; } if (code === codes.colon || code === codes.underscore || asciiAlpha(code)) { effects.consume(code); return tagOpenAttributeName; } if (markdownLineEnding(code)) { returnState = tagOpenBetween; return lineEndingBefore(code); } if (markdownSpace(code)) { effects.consume(code); return tagOpenBetween; } return end(code); } function tagOpenAttributeName(code) { if (code === codes.dash || code === codes.dot || code === codes.colon || code === codes.underscore || asciiAlphanumeric(code)) { effects.consume(code); return tagOpenAttributeName; } return tagOpenAttributeNameAfter(code); } function tagOpenAttributeNameAfter(code) { if (code === codes.equalsTo) { effects.consume(code); return tagOpenAttributeValueBefore; } if (markdownLineEnding(code)) { returnState = tagOpenAttributeNameAfter; return lineEndingBefore(code); } if (markdownSpace(code)) { effects.consume(code); return tagOpenAttributeNameAfter; } return tagOpenBetween(code); } function tagOpenAttributeValueBefore(code) { if (code === codes.eof || code === codes.lessThan || code === codes.equalsTo || code === codes.greaterThan || code === codes.graveAccent) { return nok(code); } if (code === codes.quotationMark || code === codes.apostrophe) { effects.consume(code); marker = code; return tagOpenAttributeValueQuoted; } if (markdownLineEnding(code)) { returnState = tagOpenAttributeValueBefore; return lineEndingBefore(code); } if (markdownSpace(code)) { effects.consume(code); return tagOpenAttributeValueBefore; } effects.consume(code); return tagOpenAttributeValueUnquoted; } function tagOpenAttributeValueQuoted(code) { if (code === marker) { effects.consume(code); marker = void 0; return tagOpenAttributeValueQuotedAfter; } if (code === codes.eof) { return nok(code); } if (markdownLineEnding(code)) { returnState = tagOpenAttributeValueQuoted; return lineEndingBefore(code); } effects.consume(code); return tagOpenAttributeValueQuoted; } function tagOpenAttributeValueUnquoted(code) { if (code === codes.eof || code === codes.quotationMark || code === codes.apostrophe || code === codes.lessThan || code === codes.equalsTo || code === codes.graveAccent) { return nok(code); } if (code === codes.slash || code === codes.greaterThan || markdownLineEndingOrSpace(code)) { return tagOpenBetween(code); } effects.consume(code); return tagOpenAttributeValueUnquoted; } function tagOpenAttributeValueQuotedAfter(code) { if (code === codes.slash || code === codes.greaterThan || markdownLineEndingOrSpace(code)) { return tagOpenBetween(code); } return nok(code); } function end(code) { if (code === codes.greaterThan) { effects.consume(code); effects.exit(types.htmlTextData); effects.exit(types.htmlText); return ok2; } return nok(code); } function lineEndingBefore(code) { ok(returnState, "expected return state"); ok(markdownLineEnding(code), "expected eol"); effects.exit(types.htmlTextData); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return lineEndingAfter; } function lineEndingAfter(code) { ok( self.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return markdownSpace(code) ? factorySpace( effects, lineEndingAfterPrefix, types.linePrefix, self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize )(code) : lineEndingAfterPrefix(code); } function lineEndingAfterPrefix(code) { effects.enter(types.htmlTextData); return returnState(code); } } // node_modules/micromark-core-commonmark/dev/lib/label-end.js var labelEnd = { name: "labelEnd", tokenize: tokenizeLabelEnd, resolveTo: resolveToLabelEnd, resolveAll: resolveAllLabelEnd }; var resourceConstruct = { tokenize: tokenizeResource }; var referenceFullConstruct = { tokenize: tokenizeReferenceFull }; var referenceCollapsedConstruct = { tokenize: tokenizeReferenceCollapsed }; function resolveAllLabelEnd(events) { let index2 = -1; while (++index2 < events.length) { const token = events[index2][1]; if (token.type === types.labelImage || token.type === types.labelLink || token.type === types.labelEnd) { events.splice(index2 + 1, token.type === types.labelImage ? 4 : 2); token.type = types.data; index2++; } } return events; } function resolveToLabelEnd(events, context) { let index2 = events.length; let offset = 0; let token; let open; let close; let media; while (index2--) { token = events[index2][1]; if (open) { if (token.type === types.link || token.type === types.labelLink && token._inactive) { break; } if (events[index2][0] === "enter" && token.type === types.labelLink) { token._inactive = true; } } else if (close) { if (events[index2][0] === "enter" && (token.type === types.labelImage || token.type === types.labelLink) && !token._balanced) { open = index2; if (token.type !== types.labelLink) { offset = 2; break; } } } else if (token.type === types.labelEnd) { close = index2; } } ok(open !== void 0, "`open` is supposed to be found"); ok(close !== void 0, "`close` is supposed to be found"); const group = { type: events[open][1].type === types.labelLink ? types.link : types.image, start: Object.assign({}, events[open][1].start), end: Object.assign({}, events[events.length - 1][1].end) }; const label = { type: types.label, start: Object.assign({}, events[open][1].start), end: Object.assign({}, events[close][1].end) }; const text3 = { type: types.labelText, start: Object.assign({}, events[open + offset + 2][1].end), end: Object.assign({}, events[close - 2][1].start) }; media = [ ["enter", group, context], ["enter", label, context] ]; media = push(media, events.slice(open + 1, open + offset + 3)); media = push(media, [["enter", text3, context]]); ok( context.parser.constructs.insideSpan.null, "expected `insideSpan.null` to be populated" ); media = push( media, resolveAll( context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context ) ); media = push(media, [ ["exit", text3, context], events[close - 2], events[close - 1], ["exit", label, context] ]); media = push(media, events.slice(close + 1)); media = push(media, [["exit", group, context]]); splice(events, open, events.length, media); return events; } function tokenizeLabelEnd(effects, ok2, nok) { const self = this; let index2 = self.events.length; let labelStart; let defined; while (index2--) { if ((self.events[index2][1].type === types.labelImage || self.events[index2][1].type === types.labelLink) && !self.events[index2][1]._balanced) { labelStart = self.events[index2][1]; break; } } return start; function start(code) { ok(code === codes.rightSquareBracket, "expected `]`"); if (!labelStart) { return nok(code); } if (labelStart._inactive) { return labelEndNok(code); } defined = self.parser.defined.includes( normalizeIdentifier( self.sliceSerialize({ start: labelStart.end, end: self.now() }) ) ); effects.enter(types.labelEnd); effects.enter(types.labelMarker); effects.consume(code); effects.exit(types.labelMarker); effects.exit(types.labelEnd); return after; } function after(code) { if (code === codes.leftParenthesis) { return effects.attempt( resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok )(code); } if (code === codes.leftSquareBracket) { return effects.attempt( referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok )(code); } return defined ? labelEndOk(code) : labelEndNok(code); } function referenceNotFull(code) { return effects.attempt( referenceCollapsedConstruct, labelEndOk, labelEndNok )(code); } function labelEndOk(code) { return ok2(code); } function labelEndNok(code) { labelStart._balanced = true; return nok(code); } } function tokenizeResource(effects, ok2, nok) { return resourceStart; function resourceStart(code) { ok(code === codes.leftParenthesis, "expected left paren"); effects.enter(types.resource); effects.enter(types.resourceMarker); effects.consume(code); effects.exit(types.resourceMarker); return resourceBefore; } function resourceBefore(code) { return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code); } function resourceOpen(code) { if (code === codes.rightParenthesis) { return resourceEnd(code); } return factoryDestination( effects, resourceDestinationAfter, resourceDestinationMissing, types.resourceDestination, types.resourceDestinationLiteral, types.resourceDestinationLiteralMarker, types.resourceDestinationRaw, types.resourceDestinationString, constants.linkResourceDestinationBalanceMax )(code); } function resourceDestinationAfter(code) { return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code); } function resourceDestinationMissing(code) { return nok(code); } function resourceBetween(code) { if (code === codes.quotationMark || code === codes.apostrophe || code === codes.leftParenthesis) { return factoryTitle( effects, resourceTitleAfter, nok, types.resourceTitle, types.resourceTitleMarker, types.resourceTitleString )(code); } return resourceEnd(code); } function resourceTitleAfter(code) { return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code); } function resourceEnd(code) { if (code === codes.rightParenthesis) { effects.enter(types.resourceMarker); effects.consume(code); effects.exit(types.resourceMarker); effects.exit(types.resource); return ok2; } return nok(code); } } function tokenizeReferenceFull(effects, ok2, nok) { const self = this; return referenceFull; function referenceFull(code) { ok(code === codes.leftSquareBracket, "expected left bracket"); return factoryLabel.call( self, effects, referenceFullAfter, referenceFullMissing, types.reference, types.referenceMarker, types.referenceString )(code); } function referenceFullAfter(code) { return self.parser.defined.includes( normalizeIdentifier( self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) ) ) ? ok2(code) : nok(code); } function referenceFullMissing(code) { return nok(code); } } function tokenizeReferenceCollapsed(effects, ok2, nok) { return referenceCollapsedStart; function referenceCollapsedStart(code) { ok(code === codes.leftSquareBracket, "expected left bracket"); effects.enter(types.reference); effects.enter(types.referenceMarker); effects.consume(code); effects.exit(types.referenceMarker); return referenceCollapsedOpen; } function referenceCollapsedOpen(code) { if (code === codes.rightSquareBracket) { effects.enter(types.referenceMarker); effects.consume(code); effects.exit(types.referenceMarker); effects.exit(types.reference); return ok2; } return nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/label-start-image.js var labelStartImage = { name: "labelStartImage", tokenize: tokenizeLabelStartImage, resolveAll: labelEnd.resolveAll }; function tokenizeLabelStartImage(effects, ok2, nok) { const self = this; return start; function start(code) { ok(code === codes.exclamationMark, "expected `!`"); effects.enter(types.labelImage); effects.enter(types.labelImageMarker); effects.consume(code); effects.exit(types.labelImageMarker); return open; } function open(code) { if (code === codes.leftSquareBracket) { effects.enter(types.labelMarker); effects.consume(code); effects.exit(types.labelMarker); effects.exit(types.labelImage); return after; } return nok(code); } function after(code) { return code === codes.caret && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok2(code); } } // node_modules/micromark-core-commonmark/dev/lib/label-start-link.js var labelStartLink = { name: "labelStartLink", tokenize: tokenizeLabelStartLink, resolveAll: labelEnd.resolveAll }; function tokenizeLabelStartLink(effects, ok2, nok) { const self = this; return start; function start(code) { ok(code === codes.leftSquareBracket, "expected `[`"); effects.enter(types.labelLink); effects.enter(types.labelMarker); effects.consume(code); effects.exit(types.labelMarker); effects.exit(types.labelLink); return after; } function after(code) { return code === codes.caret && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok2(code); } } // node_modules/micromark-core-commonmark/dev/lib/line-ending.js var lineEnding = { name: "lineEnding", tokenize: tokenizeLineEnding }; function tokenizeLineEnding(effects, ok2) { return start; function start(code) { ok(markdownLineEnding(code), "expected eol"); effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); return factorySpace(effects, ok2, types.linePrefix); } } // node_modules/micromark-core-commonmark/dev/lib/thematic-break.js var thematicBreak = { name: "thematicBreak", tokenize: tokenizeThematicBreak }; function tokenizeThematicBreak(effects, ok2, nok) { let size = 0; let marker; return start; function start(code) { effects.enter(types.thematicBreak); return before(code); } function before(code) { ok( code === codes.asterisk || code === codes.dash || code === codes.underscore, "expected `*`, `-`, or `_`" ); marker = code; return atBreak(code); } function atBreak(code) { if (code === marker) { effects.enter(types.thematicBreakSequence); return sequence(code); } if (size >= constants.thematicBreakMarkerCountMin && (code === codes.eof || markdownLineEnding(code))) { effects.exit(types.thematicBreak); return ok2(code); } return nok(code); } function sequence(code) { if (code === marker) { effects.consume(code); size++; return sequence; } effects.exit(types.thematicBreakSequence); return markdownSpace(code) ? factorySpace(effects, atBreak, types.whitespace)(code) : atBreak(code); } } // node_modules/micromark-core-commonmark/dev/lib/list.js var list = { name: "list", tokenize: tokenizeListStart, continuation: { tokenize: tokenizeListContinuation }, exit: tokenizeListEnd }; var listItemPrefixWhitespaceConstruct = { tokenize: tokenizeListItemPrefixWhitespace, partial: true }; var indentConstruct = { tokenize: tokenizeIndent, partial: true }; function tokenizeListStart(effects, ok2, nok) { const self = this; const tail = self.events[self.events.length - 1]; let initialSize = tail && tail[1].type === types.linePrefix ? tail[2].sliceSerialize(tail[1], true).length : 0; let size = 0; return start; function start(code) { ok(self.containerState, "expected state"); const kind = self.containerState.type || (code === codes.asterisk || code === codes.plusSign || code === codes.dash ? types.listUnordered : types.listOrdered); if (kind === types.listUnordered ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) { if (!self.containerState.type) { self.containerState.type = kind; effects.enter(kind, { _container: true }); } if (kind === types.listUnordered) { effects.enter(types.listItemPrefix); return code === codes.asterisk || code === codes.dash ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code); } if (!self.interrupt || code === codes.digit1) { effects.enter(types.listItemPrefix); effects.enter(types.listItemValue); return inside(code); } } return nok(code); } function inside(code) { ok(self.containerState, "expected state"); if (asciiDigit(code) && ++size < constants.listItemValueSizeMax) { effects.consume(code); return inside; } if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === codes.rightParenthesis || code === codes.dot)) { effects.exit(types.listItemValue); return atMarker(code); } return nok(code); } function atMarker(code) { ok(self.containerState, "expected state"); ok(code !== codes.eof, "eof (`null`) is not a marker"); effects.enter(types.listItemMarker); effects.consume(code); effects.exit(types.listItemMarker); self.containerState.marker = self.containerState.marker || code; return effects.check( blankLine, // Can’t be empty when interrupting. self.interrupt ? nok : onBlank, effects.attempt( listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix ) ); } function onBlank(code) { ok(self.containerState, "expected state"); self.containerState.initialBlankLine = true; initialSize++; return endOfPrefix(code); } function otherPrefix(code) { if (markdownSpace(code)) { effects.enter(types.listItemPrefixWhitespace); effects.consume(code); effects.exit(types.listItemPrefixWhitespace); return endOfPrefix; } return nok(code); } function endOfPrefix(code) { ok(self.containerState, "expected state"); self.containerState.size = initialSize + self.sliceSerialize(effects.exit(types.listItemPrefix), true).length; return ok2(code); } } function tokenizeListContinuation(effects, ok2, nok) { const self = this; ok(self.containerState, "expected state"); self.containerState._closeFlow = void 0; return effects.check(blankLine, onBlank, notBlank); function onBlank(code) { ok(self.containerState, "expected state"); ok(typeof self.containerState.size === "number", "expected size"); self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine; return factorySpace( effects, ok2, types.listItemIndent, self.containerState.size + 1 )(code); } function notBlank(code) { ok(self.containerState, "expected state"); if (self.containerState.furtherBlankLines || !markdownSpace(code)) { self.containerState.furtherBlankLines = void 0; self.containerState.initialBlankLine = void 0; return notInCurrentItem(code); } self.containerState.furtherBlankLines = void 0; self.containerState.initialBlankLine = void 0; return effects.attempt(indentConstruct, ok2, notInCurrentItem)(code); } function notInCurrentItem(code) { ok(self.containerState, "expected state"); self.containerState._closeFlow = true; self.interrupt = void 0; ok( self.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return factorySpace( effects, effects.attempt(list, ok2, nok), types.linePrefix, self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize )(code); } } function tokenizeIndent(effects, ok2, nok) { const self = this; ok(self.containerState, "expected state"); ok(typeof self.containerState.size === "number", "expected size"); return factorySpace( effects, afterPrefix, types.listItemIndent, self.containerState.size + 1 ); function afterPrefix(code) { ok(self.containerState, "expected state"); const tail = self.events[self.events.length - 1]; return tail && tail[1].type === types.listItemIndent && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok2(code) : nok(code); } } function tokenizeListEnd(effects) { ok(this.containerState, "expected state"); ok(typeof this.containerState.type === "string", "expected type"); effects.exit(this.containerState.type); } function tokenizeListItemPrefixWhitespace(effects, ok2, nok) { const self = this; ok( self.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return factorySpace( effects, afterPrefix, types.listItemPrefixWhitespace, self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize + 1 ); function afterPrefix(code) { const tail = self.events[self.events.length - 1]; return !markdownSpace(code) && tail && tail[1].type === types.listItemPrefixWhitespace ? ok2(code) : nok(code); } } // node_modules/micromark-core-commonmark/dev/lib/setext-underline.js var setextUnderline = { name: "setextUnderline", tokenize: tokenizeSetextUnderline, resolveTo: resolveToSetextUnderline }; function resolveToSetextUnderline(events, context) { let index2 = events.length; let content3; let text3; let definition2; while (index2--) { if (events[index2][0] === "enter") { if (events[index2][1].type === types.content) { content3 = index2; break; } if (events[index2][1].type === types.paragraph) { text3 = index2; } } else { if (events[index2][1].type === types.content) { events.splice(index2, 1); } if (!definition2 && events[index2][1].type === types.definition) { definition2 = index2; } } } ok(text3 !== void 0, "expected a `text` index to be found"); ok(content3 !== void 0, "expected a `text` index to be found"); const heading = { type: types.setextHeading, start: Object.assign({}, events[text3][1].start), end: Object.assign({}, events[events.length - 1][1].end) }; events[text3][1].type = types.setextHeadingText; if (definition2) { events.splice(text3, 0, ["enter", heading, context]); events.splice(definition2 + 1, 0, ["exit", events[content3][1], context]); events[content3][1].end = Object.assign({}, events[definition2][1].end); } else { events[content3][1] = heading; } events.push(["exit", heading, context]); return events; } function tokenizeSetextUnderline(effects, ok2, nok) { const self = this; let marker; return start; function start(code) { let index2 = self.events.length; let paragraph; ok( code === codes.dash || code === codes.equalsTo, "expected `=` or `-`" ); while (index2--) { if (self.events[index2][1].type !== types.lineEnding && self.events[index2][1].type !== types.linePrefix && self.events[index2][1].type !== types.content) { paragraph = self.events[index2][1].type === types.paragraph; break; } } if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) { effects.enter(types.setextHeadingLine); marker = code; return before(code); } return nok(code); } function before(code) { effects.enter(types.setextHeadingLineSequence); return inside(code); } function inside(code) { if (code === marker) { effects.consume(code); return inside; } effects.exit(types.setextHeadingLineSequence); return markdownSpace(code) ? factorySpace(effects, after, types.lineSuffix)(code) : after(code); } function after(code) { if (code === codes.eof || markdownLineEnding(code)) { effects.exit(types.setextHeadingLine); return ok2(code); } return nok(code); } } // 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(content2, afterConstruct) ), types.linePrefix ) ) ); return initial; function atBlankEnding(code) { ok( code === codes.eof || markdownLineEnding(code), "expected eol or eof" ); if (code === codes.eof) { effects.consume(code); return; } effects.enter(types.lineEndingBlank); effects.consume(code); effects.exit(types.lineEndingBlank); self.currentConstruct = void 0; return initial; } function afterConstruct(code) { ok( code === codes.eof || markdownLineEnding(code), "expected eol or eof" ); if (code === codes.eof) { effects.consume(code); return; } effects.enter(types.lineEnding); effects.consume(code); effects.exit(types.lineEnding); self.currentConstruct = void 0; return initial; } } // node_modules/micromark/dev/lib/initialize/text.js var resolver = { resolveAll: createResolver() }; var string = initializeFactory("string"); var text = initializeFactory("text"); function initializeFactory(field) { return { tokenize: initializeText, resolveAll: createResolver( field === "text" ? resolveAllLineSuffixes : void 0 ) }; function initializeText(effects) { const self = this; const constructs2 = this.parser.constructs[field]; const text3 = effects.attempt(constructs2, start, notText); return start; function start(code) { return atBreak(code) ? text3(code) : notText(code); } function notText(code) { if (code === codes.eof) { effects.consume(code); return; } effects.enter(types.data); effects.consume(code); return data; } function data(code) { if (atBreak(code)) { effects.exit(types.data); return text3(code); } effects.consume(code); return data; } function atBreak(code) { if (code === codes.eof) { return true; } const list2 = constructs2[code]; let index2 = -1; if (list2) { ok(Array.isArray(list2), "expected `disable.null` to be populated"); while (++index2 < list2.length) { const item = list2[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 (size) { const token = { type: eventIndex === events.length || tabs || size < constants.hardBreakPrefixSizeMin ? types.lineSuffix : types.hardBreakTrailing, start: { line: data.end.line, column: data.end.column - size, offset: data.end.offset - size, _index: data.start._index + index2, _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex }, end: Object.assign({}, data.end) }; data.end = Object.assign({}, 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/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 = Object.assign( from ? Object.assign({}, from) : { line: 1, column: 1, offset: 0 }, { _index: 0, _bufferIndex: -1 } ); const columnStart = {}; const resolveAllConstructs = []; let chunks = []; let stack = []; let consumed = true; const effects = { consume, enter, exit: exit2, attempt: constructFactory(onsuccessfulconstruct), check: constructFactory(onsuccessfulcheck), interrupt: constructFactory(onsuccessfulcheck, { interrupt: true }) }; const context = { previous: codes.eof, code: codes.eof, containerState: {}, events: [], parser, sliceStream, sliceSerialize, now, defineSkip, 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 { line: line2, column, offset, _index, _bufferIndex } = point3; return { line: line2, column, offset, _index, _bufferIndex }; } 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(code) { ok(consumed === true, "expected character to be consumed"); consumed = void 0; debug("main: passing `%s` to %s", code, state && state.name); expectedCode = code; ok(typeof state === "function", "expected state"); state = state(code); } function consume(code) { ok(code === expectedCode, "expected given code to equal expected code"); debug("consume: `%s`", code); 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( code === 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(code)) { point3.line++; point3.column = 1; point3.offset += code === codes.carriageReturnLineFeed ? 2 : 1; accountForPotentialSkip(); debug("position: after eol: `%j`", point3); } else if (code !== codes.virtualSpace) { point3.column++; point3.offset++; } if (point3._bufferIndex < 0) { point3._index++; } else { point3._bufferIndex++; if (point3._bufferIndex === chunks[point3._index].length) { point3._bufferIndex = -1; point3._index++; } } context.previous = code; 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 exit2(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(constructs2, returnState, bogusState) { let listOfConstructs; let constructIndex; let currentConstruct; let info; return Array.isArray(constructs2) ? ( /* c8 ignore next 1 */ handleListOfConstructs(constructs2) ) : "tokenize" in constructs2 ? ( // @ts-expect-error Looks like a construct. handleListOfConstructs([constructs2]) ) : handleMapOfConstructs(constructs2); function handleMapOfConstructs(map) { return start; function start(code) { const def = code !== null && map[code]; const all2 = code !== null && map.null; const list2 = [ // To do: add more extension tests. /* c8 ignore next 2 */ ...Array.isArray(def) ? def : def ? [def] : [], ...Array.isArray(all2) ? all2 : all2 ? [all2] : [] ]; return handleListOfConstructs(list2)(code); } } function handleListOfConstructs(list2) { listOfConstructs = list2; constructIndex = 0; if (list2.length === 0) { ok(bogusState, "expected `bogusState` to be given"); return bogusState; } return handleConstruct(list2[constructIndex]); } function handleConstruct(construct) { return start; function start(code) { 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(code); } 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 )(code); } } function ok2(code) { ok(code === expectedCode, "expected code"); consumed = true; onreturn(currentConstruct, info); return returnState; } function nok(code) { ok(code === 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 { restore, from: startEventsIndex }; 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/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: () => text2 }); 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 text2 = { [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/micromark/dev/lib/parse.js function parse(options) { const settings = options || {}; const constructs2 = ( /** @type {FullNormalizedExtension} */ combineExtensions([constructs_exports, ...settings.extensions || []]) ); const parser = { defined: [], lazy: {}, constructs: constructs2, content: create(content), document: create(document2), flow: create(flow), string: create(string), text: create(text) }; return parser; function create(initial) { return creator; function creator(from) { return createTokenizer(parser, initial, from); } } } // node_modules/micromark/dev/lib/preprocess.js var search = /[\0\t\n\r]/g; function preprocess() { let column = 1; let buffer = ""; let start = true; let atCarriageReturn; return preprocessor; function preprocessor(value, encoding, end) { const chunks = []; let match; let next; let startPosition; let endPosition; let code; value = buffer + value.toString(encoding); startPosition = 0; buffer = ""; if (start) { if (value.charCodeAt(0) === codes.byteOrderMarker) { startPosition++; } start = void 0; } while (startPosition < value.length) { search.lastIndex = startPosition; match = search.exec(value); endPosition = match && match.index !== void 0 ? match.index : value.length; code = value.charCodeAt(endPosition); if (!match) { buffer = value.slice(startPosition); break; } if (code === 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 (code) { 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/micromark/dev/lib/postprocess.js function postprocess(events) { while (!subtokenize(events)) { } return events; } // node_modules/micromark-util-decode-numeric-character-reference/dev/index.js function decodeNumericCharacterReference(value, base) { const code = Number.parseInt(value, base); if ( // C0 except for HT, LF, FF, CR, space. code < codes.ht || code === codes.vt || code > codes.cr && code < codes.space || // Control character (DEL) of C0, and C1 controls. code > codes.tilde && code < 160 || // Lone high surrogates and low surrogates. code > 55295 && code < 57344 || // Noncharacters. code > 64975 && code < 65008 || /* eslint-disable no-bitwise */ (code & 65535) === 65535 || (code & 65535) === 65534 || /* eslint-enable no-bitwise */ // Out of range code > 1114111 ) { return values.replacementCharacter; } return String.fromCharCode(code); } // node_modules/micromark-util-decode-string/dev/index.js var characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi; function decodeString(value) { return value.replace(characterEscapeOrReference, decode); } function decode($0, $1, $2) { if ($1) { return $1; } const head = $2.charCodeAt(0); if (head === codes.numberSign) { const head2 = $2.charCodeAt(1); const hex = head2 === codes.lowercaseX || head2 === codes.uppercaseX; return decodeNumericCharacterReference( $2.slice(hex ? 2 : 1), hex ? constants.numericBaseHexadecimal : constants.numericBaseDecimal ); } return decodeNamedCharacterReference($2) || $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 position(value.position); } if ("start" in value || "end" in value) { return position(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 position(pos) { return point(pos && pos.start) + "-" + point(pos && pos.end); } function index(value) { return value && typeof value === "number" ? value : 1; } // node_modules/mdast-util-from-markdown/dev/lib/index.js var own = {}.hasOwnProperty; var fromMarkdown = ( /** * @type {( * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) & * ((value: Value, options?: Options | null | undefined) => Root) * )} */ /** * @param {Value} value * @param {Encoding | Options | null | undefined} [encoding] * @param {Options | null | undefined} [options] * @returns {Root} */ function(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(link), autolinkProtocol: onenterdata, autolinkEmail: onenterdata, atxHeading: opener(heading), 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(emphasis), hardBreakEscape: opener(hardBreak), hardBreakTrailing: opener(hardBreak), htmlFlow: opener(html, buffer), htmlFlowData: onenterdata, htmlText: opener(html, buffer), htmlTextData: onenterdata, image: opener(image), label: buffer, link: opener(link), listItem: opener(listItem), listItemValue: onenterlistitemvalue, listOrdered: opener(list2, onenterlistordered), listUnordered: opener(list2), paragraph: opener(paragraph), reference: onenterreference, referenceString: buffer, resourceDestinationString: buffer, resourceTitleString: buffer, setextHeading: opener(heading), strong: opener(strong), thematicBreak: opener(thematicBreak2) }, exit: { atxHeading: closer(), atxHeadingSequence: onexitatxheadingsequence, autolink: closer(), autolinkEmail: onexitautolinkemail, autolinkProtocol: onexitautolinkprotocol, blockQuote: closer(), characterEscapeValue: onexitdata, characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, characterReferenceMarkerNumeric: onexitcharacterreferencemarker, characterReferenceValue: onexitcharacterreferencevalue, 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 compile; function compile(events) { let tree = { type: "root", children: [] }; const context = { stack: [tree], tokenStack: [], config, enter, exit: exit2, buffer, resume, setData, getData }; 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 (own.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, start, length) { let index2 = start - 1; let containerBalance = -1; let listSpread = false; let listItem2; let lineIndex; let firstBlankLineIndex; let atMarker; while (++index2 <= length) { const event = events[index2]; if (event[1].type === types.listUnordered || event[1].type === types.listOrdered || event[1].type === types.blockQuote) { if (event[0] === "enter") { containerBalance++; } else { containerBalance--; } atMarker = void 0; } else if (event[1].type === types.lineEndingBlank) { if (event[0] === "enter") { if (listItem2 && !atMarker && !containerBalance && !firstBlankLineIndex) { firstBlankLineIndex = index2; } atMarker = void 0; } } else if (event[1].type === types.linePrefix || event[1].type === types.listItemValue || event[1].type === types.listItemMarker || event[1].type === types.listItemPrefix || event[1].type === types.listItemPrefixWhitespace) { } else { 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 (listItem2) { 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)) { listItem2._spread = true; } listItem2.end = Object.assign( {}, lineIndex ? events[lineIndex][1].start : event[1].end ); events.splice(lineIndex || index2, 0, ["exit", listItem2, event[2]]); index2++; length++; } if (event[1].type === types.listItemPrefix) { listItem2 = { type: "listItem", _spread: false, start: Object.assign({}, event[1].start), // @ts-expect-error: we’ll add `end` in a second. end: void 0 }; events.splice(index2, 0, ["enter", listItem2, event[2]]); index2++; length++; firstBlankLineIndex = void 0; atMarker = true; } } } events[start][1]._spread = listSpread; return length; } function setData(key, value) { data[key] = value; } function getData(key) { return data[key]; } 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(node2, token, errorHandler) { const parent = this.stack[this.stack.length - 1]; ok(parent, "expected `parent`"); ok("children" in parent, "expected `parent`"); parent.children.push(node2); this.stack.push(node2); this.tokenStack.push([token, errorHandler]); node2.position = { start: point2(token.start) }; return node2; } function closer(and) { return close; function close(token) { if (and) and.call(this, token); exit2.call(this, token); } } function exit2(token, onExitError) { const node2 = this.stack.pop(); ok(node2, "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(node2.type !== "fragment", "unexpected fragment `exit`ed"); ok(node2.position, "expected `position` to be defined"); node2.position.end = point2(token.end); return node2; } function resume() { return toString(this.stack.pop()); } function onenterlistordered() { setData("expectingFirstListItemValue", true); } function onenterlistitemvalue(token) { if (getData("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 ); setData("expectingFirstListItemValue"); } } function onexitcodefencedfenceinfo() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "code", "expected code on stack"); node2.lang = data2; } function onexitcodefencedfencemeta() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "code", "expected code on stack"); node2.meta = data2; } function onexitcodefencedfence() { if (getData("flowCodeInside")) return; this.buffer(); setData("flowCodeInside", true); } function onexitcodefenced() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "code", "expected code on stack"); node2.value = data2.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""); setData("flowCodeInside"); } function onexitcodeindented() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "code", "expected code on stack"); node2.value = data2.replace(/(\r?\n|\r)$/g, ""); } function onexitdefinitionlabelstring(token) { const label = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "definition", "expected definition on stack"); node2.label = label; node2.identifier = normalizeIdentifier( this.sliceSerialize(token) ).toLowerCase(); } function onexitdefinitiontitlestring() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "definition", "expected definition on stack"); node2.title = data2; } function onexitdefinitiondestinationstring() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "definition", "expected definition on stack"); node2.url = data2; } function onexitatxheadingsequence(token) { const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "heading", "expected heading on stack"); if (!node2.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`" ); node2.depth = depth; } } function onexitsetextheadingtext() { setData("setextHeadingSlurpLineEnding", true); } function onexitsetextheadinglinesequence(token) { const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "heading", "expected heading on stack"); node2.depth = this.sliceSerialize(token).charCodeAt(0) === codes.equalsTo ? 1 : 2; } function onexitsetextheading() { setData("setextHeadingSlurpLineEnding"); } function onenterdata(token) { const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok("children" in node2, "expected parent on stack"); let tail = node2.children[node2.children.length - 1]; if (!tail || tail.type !== "text") { tail = text3(); tail.position = { start: point2(token.start) }; node2.children.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 (getData("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); setData("atHardBreak"); return; } if (!getData("setextHeadingSlurpLineEnding") && config.canContainEols.includes(context.type)) { onenterdata.call(this, token); onexitdata.call(this, token); } } function onexithardbreak() { setData("atHardBreak", true); } function onexithtmlflow() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "html", "expected html on stack"); node2.value = data2; } function onexithtmltext() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "html", "expected html on stack"); node2.value = data2; } function onexitcodetext() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "inlineCode", "expected inline code on stack"); node2.value = data2; } function onexitlink() { const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "link", "expected link on stack"); if (getData("inReference")) { const referenceType = getData("referenceType") || "shortcut"; node2.type += "Reference"; node2.referenceType = referenceType; delete node2.url; delete node2.title; } else { delete node2.identifier; delete node2.label; } setData("referenceType"); } function onexitimage() { const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "image", "expected image on stack"); if (getData("inReference")) { const referenceType = getData("referenceType") || "shortcut"; node2.type += "Reference"; node2.referenceType = referenceType; delete node2.url; delete node2.title; } else { delete node2.identifier; delete node2.label; } setData("referenceType"); } 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 node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok( node2.type === "image" || node2.type === "link", "expected image or link on stack" ); setData("inReference", true); if (node2.type === "link") { const children = fragment.children; node2.children = children; } else { node2.alt = value; } } function onexitresourcedestinationstring() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok( node2.type === "image" || node2.type === "link", "expected image or link on stack" ); node2.url = data2; } function onexitresourcetitlestring() { const data2 = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok( node2.type === "image" || node2.type === "link", "expected image or link on stack" ); node2.title = data2; } function onexitresource() { setData("inReference"); } function onenterreference() { setData("referenceType", "collapsed"); } function onexitreferencestring(token) { const label = this.resume(); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok( node2.type === "image" || node2.type === "link", "expected image reference or link reference on stack" ); node2.label = label; node2.identifier = normalizeIdentifier( this.sliceSerialize(token) ).toLowerCase(); setData("referenceType", "full"); } function onexitcharacterreferencemarker(token) { ok( token.type === "characterReferenceMarkerNumeric" || token.type === "characterReferenceMarkerHexadecimal" ); setData("characterReferenceType", token.type); } function onexitcharacterreferencevalue(token) { const data2 = this.sliceSerialize(token); const type = getData("characterReferenceType"); let value; if (type) { value = decodeNumericCharacterReference( data2, type === types.characterReferenceMarkerNumeric ? constants.numericBaseDecimal : constants.numericBaseHexadecimal ); setData("characterReferenceType"); } else { const result = decodeNamedCharacterReference(data2); ok(result !== false, "expected reference to decode"); value = result; } const tail = this.stack.pop(); ok(tail, "expected `node`"); ok(tail.position, "expected `node.position`"); ok("value" in tail, "expected `node.value`"); tail.value += value; tail.position.end = point2(token.end); } function onexitautolinkprotocol(token) { onexitdata.call(this, token); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "link", "expected link on stack"); node2.url = this.sliceSerialize(token); } function onexitautolinkemail(token) { onexitdata.call(this, token); const node2 = this.stack[this.stack.length - 1]; ok(node2, "expected node on stack"); ok(node2.type === "link", "expected link on stack"); node2.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 emphasis() { return { type: "emphasis", children: [] }; } function heading() { return { type: "heading", depth: void 0, children: [] }; } function hardBreak() { return { type: "break" }; } function html() { return { type: "html", value: "" }; } function image() { return { type: "image", title: null, url: "", alt: null }; } function link() { return { type: "link", title: null, url: "", children: [] }; } function list2(token) { return { type: "list", ordered: token.type === "listOrdered", start: null, spread: token._spread, children: [] }; } function listItem(token) { return { type: "listItem", spread: token._spread, checked: null, children: [] }; } function paragraph() { return { type: "paragraph", children: [] }; } function strong() { return { type: "strong", children: [] }; } function text3() { return { type: "text", value: "" }; } function thematicBreak2() { 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 (own.call(extension2, key)) { if (key === "canContainEols") { const right = extension2[key]; if (right) { combined[key].push(...right); } } else if (key === "transforms") { const right = extension2[key]; if (right) { combined[key].push(...right); } } else if (key === "enter" || key === "exit") { const right = extension2[key]; if (right) { Object.assign(combined[key], right); } } } } } 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/mermaid/dist/createText-ca0c5216.js function preprocessMarkdown(markdown) { const withoutMultipleNewlines = markdown.replace(/\n{2,}/g, "\n"); const withoutExtraSpaces = dedent(withoutMultipleNewlines); return withoutExtraSpaces; } function markdownToLines(markdown) { const preprocessedMarkdown = preprocessMarkdown(markdown); const { children } = fromMarkdown(preprocessedMarkdown); const lines2 = [[]]; let currentLine = 0; function processNode(node2, parentType = "normal") { if (node2.type === "text") { const textLines = node2.value.split("\n"); textLines.forEach((textLine, index2) => { if (index2 !== 0) { currentLine++; lines2.push([]); } textLine.split(" ").forEach((word) => { if (word) { lines2[currentLine].push({ content: word, type: parentType }); } }); }); } else if (node2.type === "strong" || node2.type === "emphasis") { node2.children.forEach((contentNode) => { processNode(contentNode, node2.type); }); } } children.forEach((treeNode) => { if (treeNode.type === "paragraph") { treeNode.children.forEach((contentNode) => { processNode(contentNode); }); } }); return lines2; } function markdownToHTML(markdown) { const { children } = fromMarkdown(markdown); function output(node2) { if (node2.type === "text") { return node2.value.replace(/\n/g, "
"); } else if (node2.type === "strong") { return `${node2.children.map(output).join("")}`; } else if (node2.type === "emphasis") { return `${node2.children.map(output).join("")}`; } else if (node2.type === "paragraph") { return `

${node2.children.map(output).join("")}

`; } return `Unsupported markdown: ${node2.type}`; } return children.map(output).join(""); } function splitTextToChars(text3) { if (Intl.Segmenter) { return [...new Intl.Segmenter().segment(text3)].map((s) => s.segment); } return [...text3]; } function splitWordToFitWidth(checkFit, word) { const characters = splitTextToChars(word.content); return splitWordToFitWidthRecursion(checkFit, [], characters, word.type); } function splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) { if (remainingChars.length === 0) { return [ { content: usedChars.join(""), type }, { content: "", type } ]; } const [nextChar, ...rest] = remainingChars; const newWord = [...usedChars, nextChar]; if (checkFit([{ content: newWord.join(""), type }])) { return splitWordToFitWidthRecursion(checkFit, newWord, rest, type); } if (usedChars.length === 0 && nextChar) { usedChars.push(nextChar); remainingChars.shift(); } return [ { content: usedChars.join(""), type }, { content: remainingChars.join(""), type } ]; } function splitLineToFitWidth(line2, checkFit) { if (line2.some(({ content: content3 }) => content3.includes("\n"))) { throw new Error("splitLineToFitWidth does not support newlines in the line"); } return splitLineToFitWidthRecursion(line2, checkFit); } function splitLineToFitWidthRecursion(words, checkFit, lines2 = [], newLine = []) { if (words.length === 0) { if (newLine.length > 0) { lines2.push(newLine); } return lines2.length > 0 ? lines2 : []; } let joiner = ""; if (words[0].content === " ") { joiner = " "; words.shift(); } const nextWord = words.shift() ?? { content: " ", type: "normal" }; const lineWithNextWord = [...newLine]; if (joiner !== "") { lineWithNextWord.push({ content: joiner, type: "normal" }); } lineWithNextWord.push(nextWord); if (checkFit(lineWithNextWord)) { return splitLineToFitWidthRecursion(words, checkFit, lines2, lineWithNextWord); } if (newLine.length > 0) { lines2.push(newLine); words.unshift(nextWord); } else if (nextWord.content) { const [line2, rest] = splitWordToFitWidth(checkFit, nextWord); lines2.push([line2]); if (rest.content) { words.unshift(rest); } } return splitLineToFitWidthRecursion(words, checkFit, lines2); } function applyStyle(dom, styleFn) { if (styleFn) { dom.attr("style", styleFn); } } function addHtmlSpan(element2, node2, width, classes, addBackground = false) { const fo = element2.append("foreignObject"); const div = fo.append("xhtml:div"); const label = node2.label; const labelClass = node2.isNode ? "nodeLabel" : "edgeLabel"; div.html( ` " + label + "" ); applyStyle(div, node2.labelStyle); div.style("display", "table-cell"); div.style("white-space", "nowrap"); div.style("max-width", width + "px"); div.attr("xmlns", "http://www.w3.org/1999/xhtml"); if (addBackground) { div.attr("class", "labelBkg"); } let bbox = div.node().getBoundingClientRect(); if (bbox.width === width) { div.style("display", "table"); div.style("white-space", "break-spaces"); div.style("width", width + "px"); bbox = div.node().getBoundingClientRect(); } fo.style("width", bbox.width); fo.style("height", bbox.height); return fo.node(); } function createTspan(textElement, lineIndex, lineHeight) { return textElement.append("tspan").attr("class", "text-outer-tspan").attr("x", 0).attr("y", lineIndex * lineHeight - 0.1 + "em").attr("dy", lineHeight + "em"); } function computeWidthOfText(parentNode, lineHeight, line2) { const testElement = parentNode.append("text"); const testSpan = createTspan(testElement, 1, lineHeight); updateTextContentAndStyles(testSpan, line2); const textLength = testSpan.node().getComputedTextLength(); testElement.remove(); return textLength; } function computeDimensionOfText(parentNode, lineHeight, text3) { var _a; const testElement = parentNode.append("text"); const testSpan = createTspan(testElement, 1, lineHeight); updateTextContentAndStyles(testSpan, [{ content: text3, type: "normal" }]); const textDimension = (_a = testSpan.node()) == null ? void 0 : _a.getBoundingClientRect(); if (textDimension) { testElement.remove(); } return textDimension; } function createFormattedText(width, g, structuredText, addBackground = false) { const lineHeight = 1.1; const labelGroup = g.append("g"); const bkg = labelGroup.insert("rect").attr("class", "background"); const textElement = labelGroup.append("text").attr("y", "-10.1"); let lineIndex = 0; for (const line2 of structuredText) { const checkWidth = (line22) => computeWidthOfText(labelGroup, lineHeight, line22) <= width; const linesUnderWidth = checkWidth(line2) ? [line2] : splitLineToFitWidth(line2, checkWidth); for (const preparedLine of linesUnderWidth) { const tspan = createTspan(textElement, lineIndex, lineHeight); updateTextContentAndStyles(tspan, preparedLine); lineIndex++; } } if (addBackground) { const bbox = textElement.node().getBBox(); const padding = 2; bkg.attr("x", -padding).attr("y", -padding).attr("width", bbox.width + 2 * padding).attr("height", bbox.height + 2 * padding); return labelGroup.node(); } else { return textElement.node(); } } function updateTextContentAndStyles(tspan, wrappedLine) { tspan.text(""); wrappedLine.forEach((word, index2) => { const innerTspan = tspan.append("tspan").attr("font-style", word.type === "emphasis" ? "italic" : "normal").attr("class", "text-inner-tspan").attr("font-weight", word.type === "strong" ? "bold" : "normal"); if (index2 === 0) { innerTspan.text(word.content); } else { innerTspan.text(" " + word.content); } }); } var createText = (el, text3 = "", { style = "", isTitle = false, classes = "", useHtmlLabels = true, isNode = true, width = 200, addSvgBackground = false } = {}) => { log$1.info("createText", text3, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground); if (useHtmlLabels) { const htmlText2 = markdownToHTML(text3); const node2 = { isNode, label: decodeEntities(htmlText2).replace( /fa[blrs]?:fa-[\w-]+/g, // cspell: disable-line (s) => `` ), labelStyle: style.replace("fill:", "color:") }; const vertexNode = addHtmlSpan(el, node2, width, classes, addSvgBackground); return vertexNode; } else { const structuredText = markdownToLines(text3); const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground); return svgLabel; } }; export { computeDimensionOfText, createText }; //# sourceMappingURL=chunk-2YCCOETS.js.map