function resourceBetween(code2) { if (code2 === codes.quotationMark || code2 === codes.apostrophe || code2 === codes.leftParenthesis) { return factoryTitle( effects, resourceTitleAfter, nok, types.resourceTitle, types.resourceTitleMarker, types.resourceTitleString )(code2); } return resourceEnd(code2); } function resourceTitleAfter(code2) { return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceEnd)(code2) : resourceEnd(code2); } function resourceEnd(code2) { if (code2 === codes.rightParenthesis) { effects.enter(types.resourceMarker); effects.consume(code2); effects.exit(types.resourceMarker); effects.exit(types.resource); return ok3; } return nok(code2); } } function tokenizeReferenceFull(effects, ok3, nok) { const self2 = this; return referenceFull; function referenceFull(code2) { ok(code2 === codes.leftSquareBracket, "expected left bracket"); return factoryLabel.call( self2, effects, referenceFullAfter, referenceFullMissing, types.reference, types.referenceMarker, types.referenceString )(code2); } function referenceFullAfter(code2) { return self2.parser.defined.includes( normalizeIdentifier( self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1) ) ) ? ok3(code2) : nok(code2); } function referenceFullMissing(code2) { return nok(code2); } } function tokenizeReferenceCollapsed(effects, ok3, nok) { return referenceCollapsedStart; function referenceCollapsedStart(code2) { ok(code2 === codes.leftSquareBracket, "expected left bracket"); effects.enter(types.reference); effects.enter(types.referenceMarker); effects.consume(code2); effects.exit(types.referenceMarker); return referenceCollapsedOpen; } function referenceCollapsedOpen(code2) { if (code2 === codes.rightSquareBracket) { effects.enter(types.referenceMarker); effects.consume(code2); effects.exit(types.referenceMarker); effects.exit(types.reference); return ok3; } return nok(code2); } } // node_modules/micromark-core-commonmark/dev/lib/label-start-image.js var labelStartImage = { name: "labelStartImage", resolveAll: labelEnd.resolveAll, tokenize: tokenizeLabelStartImage }; function tokenizeLabelStartImage(effects, ok3, nok) { const self2 = this; return start2; function start2(code2) { ok(code2 === codes.exclamationMark, "expected `!`"); effects.enter(types.labelImage); effects.enter(types.labelImageMarker); effects.consume(code2); effects.exit(types.labelImageMarker); return open; } function open(code2) { if (code2 === codes.leftSquareBracket) { effects.enter(types.labelMarker); effects.consume(code2); effects.exit(types.labelMarker); effects.exit(types.labelImage); return after; } return nok(code2); } function after(code2) { return code2 === codes.caret && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code2) : ok3(code2); } } // node_modules/micromark-core-commonmark/dev/lib/label-start-link.js var labelStartLink = { name: "labelStartLink", resolveAll: labelEnd.resolveAll, tokenize: tokenizeLabelStartLink }; function tokenizeLabelStartLink(effects, ok3, nok) { const self2 = this; return start2; function start2(code2) { ok(code2 === codes.leftSquareBracket, "expected `[`"); effects.enter(types.labelLink); effects.enter(types.labelMarker); effects.consume(code2); effects.exit(types.labelMarker); effects.exit(types.labelLink); return after; } function after(code2) { return code2 === codes.caret && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code2) : ok3(code2); } } // node_modules/micromark-core-commonmark/dev/lib/line-ending.js var lineEnding = { name: "lineEnding", tokenize: tokenizeLineEnding }; function tokenizeLineEnding(effects, ok3) { return start2; function start2(code2) { ok(markdownLineEnding(code2), "expected eol"); effects.enter(types.lineEnding); effects.consume(code2); effects.exit(types.lineEnding); return factorySpace(effects, ok3, types.linePrefix); } } // node_modules/micromark-core-commonmark/dev/lib/thematic-break.js var thematicBreak = { name: "thematicBreak", tokenize: tokenizeThematicBreak }; function tokenizeThematicBreak(effects, ok3, nok) { let size = 0; let marker; return start2; function start2(code2) { effects.enter(types.thematicBreak); return before(code2); } function before(code2) { ok( code2 === codes.asterisk || code2 === codes.dash || code2 === codes.underscore, "expected `*`, `-`, or `_`" ); marker = code2; return atBreak(code2); } function atBreak(code2) { if (code2 === marker) { effects.enter(types.thematicBreakSequence); return sequence(code2); } if (size >= constants.thematicBreakMarkerCountMin && (code2 === codes.eof || markdownLineEnding(code2))) { effects.exit(types.thematicBreak); return ok3(code2); } return nok(code2); } function sequence(code2) { if (code2 === marker) { effects.consume(code2); size++; return sequence; } effects.exit(types.thematicBreakSequence); return markdownSpace(code2) ? factorySpace(effects, atBreak, types.whitespace)(code2) : atBreak(code2); } } // node_modules/micromark-core-commonmark/dev/lib/list.js var list = { continuation: { tokenize: tokenizeListContinuation }, exit: tokenizeListEnd, name: "list", tokenize: tokenizeListStart }; var listItemPrefixWhitespaceConstruct = { partial: true, tokenize: tokenizeListItemPrefixWhitespace }; var indentConstruct = { partial: true, tokenize: tokenizeIndent }; function tokenizeListStart(effects, ok3, nok) { const self2 = this; const tail = self2.events[self2.events.length - 1]; let initialSize = tail && tail[1].type === types.linePrefix ? tail[2].sliceSerialize(tail[1], true).length : 0; let size = 0; return start2; function start2(code2) { ok(self2.containerState, "expected state"); const kind = self2.containerState.type || (code2 === codes.asterisk || code2 === codes.plusSign || code2 === codes.dash ? types.listUnordered : types.listOrdered); if (kind === types.listUnordered ? !self2.containerState.marker || code2 === self2.containerState.marker : asciiDigit(code2)) { if (!self2.containerState.type) { self2.containerState.type = kind; effects.enter(kind, { _container: true }); } if (kind === types.listUnordered) { effects.enter(types.listItemPrefix); return code2 === codes.asterisk || code2 === codes.dash ? effects.check(thematicBreak, nok, atMarker)(code2) : atMarker(code2); } if (!self2.interrupt || code2 === codes.digit1) { effects.enter(types.listItemPrefix); effects.enter(types.listItemValue); return inside(code2); } } return nok(code2); } function inside(code2) { ok(self2.containerState, "expected state"); if (asciiDigit(code2) && ++size < constants.listItemValueSizeMax) { effects.consume(code2); return inside; } if ((!self2.interrupt || size < 2) && (self2.containerState.marker ? code2 === self2.containerState.marker : code2 === codes.rightParenthesis || code2 === codes.dot)) { effects.exit(types.listItemValue); return atMarker(code2); } return nok(code2); } function atMarker(code2) { ok(self2.containerState, "expected state"); ok(code2 !== codes.eof, "eof (`null`) is not a marker"); effects.enter(types.listItemMarker); effects.consume(code2); effects.exit(types.listItemMarker); self2.containerState.marker = self2.containerState.marker || code2; return effects.check( blankLine, // Can’t be empty when interrupting. self2.interrupt ? nok : onBlank, effects.attempt( listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix ) ); } function onBlank(code2) { ok(self2.containerState, "expected state"); self2.containerState.initialBlankLine = true; initialSize++; return endOfPrefix(code2); } function otherPrefix(code2) { if (markdownSpace(code2)) { effects.enter(types.listItemPrefixWhitespace); effects.consume(code2); effects.exit(types.listItemPrefixWhitespace); return endOfPrefix; } return nok(code2); } function endOfPrefix(code2) { ok(self2.containerState, "expected state"); self2.containerState.size = initialSize + self2.sliceSerialize(effects.exit(types.listItemPrefix), true).length; return ok3(code2); } } function tokenizeListContinuation(effects, ok3, nok) { const self2 = this; ok(self2.containerState, "expected state"); self2.containerState._closeFlow = void 0; return effects.check(blankLine, onBlank, notBlank); function onBlank(code2) { ok(self2.containerState, "expected state"); ok(typeof self2.containerState.size === "number", "expected size"); self2.containerState.furtherBlankLines = self2.containerState.furtherBlankLines || self2.containerState.initialBlankLine; return factorySpace( effects, ok3, types.listItemIndent, self2.containerState.size + 1 )(code2); } function notBlank(code2) { ok(self2.containerState, "expected state"); if (self2.containerState.furtherBlankLines || !markdownSpace(code2)) { self2.containerState.furtherBlankLines = void 0; self2.containerState.initialBlankLine = void 0; return notInCurrentItem(code2); } self2.containerState.furtherBlankLines = void 0; self2.containerState.initialBlankLine = void 0; return effects.attempt(indentConstruct, ok3, notInCurrentItem)(code2); } function notInCurrentItem(code2) { ok(self2.containerState, "expected state"); self2.containerState._closeFlow = true; self2.interrupt = void 0; ok( self2.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return factorySpace( effects, effects.attempt(list, ok3, nok), types.linePrefix, self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize )(code2); } } function tokenizeIndent(effects, ok3, nok) { const self2 = this; ok(self2.containerState, "expected state"); ok(typeof self2.containerState.size === "number", "expected size"); return factorySpace( effects, afterPrefix, types.listItemIndent, self2.containerState.size + 1 ); function afterPrefix(code2) { ok(self2.containerState, "expected state"); const tail = self2.events[self2.events.length - 1]; return tail && tail[1].type === types.listItemIndent && tail[2].sliceSerialize(tail[1], true).length === self2.containerState.size ? ok3(code2) : nok(code2); } } function tokenizeListEnd(effects) { ok(this.containerState, "expected state"); ok(typeof this.containerState.type === "string", "expected type"); effects.exit(this.containerState.type); } function tokenizeListItemPrefixWhitespace(effects, ok3, nok) { const self2 = this; ok( self2.parser.constructs.disable.null, "expected `disable.null` to be populated" ); return factorySpace( effects, afterPrefix, types.listItemPrefixWhitespace, self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : constants.tabSize + 1 ); function afterPrefix(code2) { const tail = self2.events[self2.events.length - 1]; return !markdownSpace(code2) && tail && tail[1].type === types.listItemPrefixWhitespace ? ok3(code2) : nok(code2); } } // node_modules/micromark-core-commonmark/dev/lib/setext-underline.js var setextUnderline = { name: "setextUnderline", resolveTo: resolveToSetextUnderline, tokenize: tokenizeSetextUnderline }; function resolveToSetextUnderline(events, context) { let index2 = events.length; let content3; let text5; 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) { text5 = index2; } } else { if (events[index2][1].type === types.content) { events.splice(index2, 1); } if (!definition2 && events[index2][1].type === types.definition) { definition2 = index2; } } } ok(text5 !== void 0, "expected a `text` index to be found"); ok(content3 !== void 0, "expected a `text` index to be found"); ok(events[content3][2] === context, "enter context should be same"); ok( events[events.length - 1][2] === context, "enter context should be same" ); const heading2 = { type: types.setextHeading, start: { ...events[content3][1].start }, end: { ...events[events.length - 1][1].end } }; events[text5][1].type = types.setextHeadingText; if (definition2) { events.splice(text5, 0, ["enter", heading2, context]); events.splice(definition2 + 1, 0, ["exit", events[content3][1], context]); events[content3][1].end = { ...events[definition2][1].end }; } else { events[content3][1] = heading2; } events.push(["exit", heading2, context]); return events; } function tokenizeSetextUnderline(effects, ok3, nok) { const self2 = this; let marker; return start2; function start2(code2) { let index2 = self2.events.length; let paragraph2; ok( code2 === codes.dash || code2 === codes.equalsTo, "expected `=` or `-`" ); while (index2--) { if (self2.events[index2][1].type !== types.lineEnding && self2.events[index2][1].type !== types.linePrefix && self2.events[index2][1].type !== types.content) { paragraph2 = self2.events[index2][1].type === types.paragraph; break; } } if (!self2.parser.lazy[self2.now().line] && (self2.interrupt || paragraph2)) { effects.enter(types.setextHeadingLine); marker = code2; return before(code2); } return nok(code2); } function before(code2) { effects.enter(types.setextHeadingLineSequence); return inside(code2); } function inside(code2) { if (code2 === marker) { effects.consume(code2); return inside; } effects.exit(types.setextHeadingLineSequence); return markdownSpace(code2) ? factorySpace(effects, after, types.lineSuffix)(code2) : after(code2); } function after(code2) { if (code2 === codes.eof || markdownLineEnding(code2)) { effects.exit(types.setextHeadingLine); return ok3(code2); } return nok(code2); } } // node_modules/micromark/dev/lib/initialize/flow.js var flow = { tokenize: initializeFlow }; function initializeFlow(effects) { const self2 = 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(code2) { ok( code2 === codes.eof || markdownLineEnding(code2), "expected eol or eof" ); if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.lineEndingBlank); effects.consume(code2); effects.exit(types.lineEndingBlank); self2.currentConstruct = void 0; return initial; } function afterConstruct(code2) { ok( code2 === codes.eof || markdownLineEnding(code2), "expected eol or eof" ); if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.lineEnding); effects.consume(code2); effects.exit(types.lineEnding); self2.currentConstruct = void 0; return initial; } } // node_modules/micromark/dev/lib/initialize/text.js var resolver = { resolveAll: createResolver() }; var string = initializeFactory("string"); var text2 = initializeFactory("text"); function initializeFactory(field) { return { resolveAll: createResolver( field === "text" ? resolveAllLineSuffixes : void 0 ), tokenize: initializeText }; function initializeText(effects) { const self2 = this; const constructs2 = this.parser.constructs[field]; const text5 = effects.attempt(constructs2, start2, notText); return start2; function start2(code2) { return atBreak(code2) ? text5(code2) : notText(code2); } function notText(code2) { if (code2 === codes.eof) { effects.consume(code2); return; } effects.enter(types.data); effects.consume(code2); return data; } function data(code2) { if (atBreak(code2)) { effects.exit(types.data); return text5(code2); } effects.consume(code2); return data; } function atBreak(code2) { if (code2 === codes.eof) { return true; } const list3 = constructs2[code2]; let index2 = -1; if (list3) { ok(Array.isArray(list3), "expected `disable.null` to be populated"); while (++index2 < list3.length) { const item = list3[index2]; if (!item.previous || item.previous.call(self2, self2.previous)) { return true; } } } return false; } } } function createResolver(extraResolver) { return resolveAllText; function resolveAllText(events, context) { let index2 = -1; let enter; while (++index2 <= events.length) { if (enter === void 0) { if (events[index2] && events[index2][1].type === types.data) { enter = index2; index2++; } } else if (!events[index2] || events[index2][1].type !== types.data) { if (index2 !== enter + 2) { events[enter][1].end = events[index2 - 1][1].end; events.splice(enter + 2, index2 - enter - 2); index2 = enter + 2; } enter = void 0; } } return extraResolver ? extraResolver(events, context) : events; } } function resolveAllLineSuffixes(events, context) { let eventIndex = 0; while (++eventIndex <= events.length) { if ((eventIndex === events.length || events[eventIndex][1].type === types.lineEnding) && events[eventIndex - 1][1].type === types.data) { const data = events[eventIndex - 1][1]; const chunks = context.sliceStream(data); let index2 = chunks.length; let bufferIndex = -1; let size = 0; let tabs; while (index2--) { const chunk = chunks[index2]; if (typeof chunk === "string") { bufferIndex = chunk.length; while (chunk.charCodeAt(bufferIndex - 1) === codes.space) { size++; bufferIndex--; } if (bufferIndex) break; bufferIndex = -1; } else if (chunk === codes.horizontalTab) { tabs = true; size++; } else if (chunk === codes.virtualSpace) { } else { index2++; break; } } if (context._contentTypeTextTrailing && eventIndex === events.length) { size = 0; } if (size) { const token = { type: eventIndex === events.length || tabs || size < constants.hardBreakPrefixSizeMin ? types.lineSuffix : types.hardBreakTrailing, start: { _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex, _index: data.start._index + index2, line: data.end.line, column: data.end.column - size, offset: data.end.offset - size }, end: { ...data.end } }; data.end = { ...token.start }; if (data.start.offset === data.end.offset) { Object.assign(data, token); } else { events.splice( eventIndex, 0, ["enter", token, context], ["exit", token, context] ); eventIndex += 2; } } eventIndex++; } } return events; } // node_modules/micromark/dev/lib/constructs.js var constructs_exports = {}; __export(constructs_exports, { attentionMarkers: () => attentionMarkers, contentInitial: () => contentInitial, disable: () => disable, document: () => document3, flow: () => flow2, flowInitial: () => flowInitial, insideSpan: () => insideSpan, string: () => string2, text: () => text3 }); var document3 = { [codes.asterisk]: list, [codes.plusSign]: list, [codes.dash]: list, [codes.digit0]: list, [codes.digit1]: list, [codes.digit2]: list, [codes.digit3]: list, [codes.digit4]: list, [codes.digit5]: list, [codes.digit6]: list, [codes.digit7]: list, [codes.digit8]: list, [codes.digit9]: list, [codes.greaterThan]: blockQuote }; var contentInitial = { [codes.leftSquareBracket]: definition }; var flowInitial = { [codes.horizontalTab]: codeIndented, [codes.virtualSpace]: codeIndented, [codes.space]: codeIndented }; var flow2 = { [codes.numberSign]: headingAtx, [codes.asterisk]: thematicBreak, [codes.dash]: [setextUnderline, thematicBreak], [codes.lessThan]: htmlFlow, [codes.equalsTo]: setextUnderline, [codes.underscore]: thematicBreak, [codes.graveAccent]: codeFenced, [codes.tilde]: codeFenced }; var string2 = { [codes.ampersand]: characterReference, [codes.backslash]: characterEscape }; var text3 = { [codes.carriageReturn]: lineEnding, [codes.lineFeed]: lineEnding, [codes.carriageReturnLineFeed]: lineEnding, [codes.exclamationMark]: labelStartImage, [codes.ampersand]: characterReference, [codes.asterisk]: attention, [codes.lessThan]: [autolink, htmlText], [codes.leftSquareBracket]: labelStartLink, [codes.backslash]: [hardBreakEscape, characterEscape], [codes.rightSquareBracket]: labelEnd, [codes.underscore]: attention, [codes.graveAccent]: codeText }; var insideSpan = { null: [attention, resolver] }; var attentionMarkers = { null: [codes.asterisk, codes.underscore] }; var disable = { null: [] }; // node_modules/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 point4 = { _bufferIndex: -1, _index: 0, line: from && from.line || 1, column: from && from.column || 1, offset: from && from.offset || 0 }; const columnStart = {}; const resolveAllConstructs = []; let chunks = []; let stack = []; let consumed = true; const effects = { attempt: constructFactory(onsuccessfulconstruct), check: constructFactory(onsuccessfulcheck), consume, enter, exit: exit2, interrupt: constructFactory(onsuccessfulcheck, { interrupt: true }) }; const context = { code: codes.eof, containerState: {}, defineSkip, events: [], now, parser, previous: codes.eof, sliceSerialize, sliceStream, write }; let state = initialize.tokenize.call(context, effects); let expectedCode; if (initialize.resolveAll) { resolveAllConstructs.push(initialize); } return context; function write(slice) { chunks = push(chunks, slice); main(); if (chunks[chunks.length - 1] !== codes.eof) { return []; } addResult(initialize, 0); context.events = resolveAll(resolveAllConstructs, context.events, context); return context.events; } function sliceSerialize(token, expandTabs) { return serializeChunks(sliceStream(token), expandTabs); } function sliceStream(token) { return sliceChunks(chunks, token); } function now() { const { _bufferIndex, _index, line, column, offset } = point4; return { _bufferIndex, _index, line, column, offset }; } function defineSkip(value) { columnStart[value.line] = value.column; accountForPotentialSkip(); debug("position: define skip: `%j`", point4); } function main() { let chunkIndex; while (point4._index < chunks.length) { const chunk = chunks[point4._index]; if (typeof chunk === "string") { chunkIndex = point4._index; if (point4._bufferIndex < 0) { point4._bufferIndex = 0; } while (point4._index === chunkIndex && point4._bufferIndex < chunk.length) { go(chunk.charCodeAt(point4._bufferIndex)); } } else { go(chunk); } } } function go(code2) { ok(consumed === true, "expected character to be consumed"); consumed = void 0; debug("main: passing `%s` to %s", code2, state && state.name); expectedCode = code2; ok(typeof state === "function", "expected state"); state = state(code2); } function consume(code2) { ok(code2 === expectedCode, "expected given code to equal expected code"); debug("consume: `%s`", code2); ok( consumed === void 0, "expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used" ); ok( code2 === null ? context.events.length === 0 || context.events[context.events.length - 1][0] === "exit" : context.events[context.events.length - 1][0] === "enter", "expected last token to be open" ); if (markdownLineEnding(code2)) { point4.line++; point4.column = 1; point4.offset += code2 === codes.carriageReturnLineFeed ? 2 : 1; accountForPotentialSkip(); debug("position: after eol: `%j`", point4); } else if (code2 !== codes.virtualSpace) { point4.column++; point4.offset++; } if (point4._bufferIndex < 0) { point4._index++; } else { point4._bufferIndex++; if (point4._bufferIndex === // Points w/ non-negative `_bufferIndex` reference // strings. /** @type {string} */ chunks[point4._index].length) { point4._bufferIndex = -1; point4._index++; } } context.previous = code2; consumed = true; } function enter(type, fields) { const token = fields || {}; token.type = type; token.start = now(); ok(typeof type === "string", "expected string type"); ok(type.length > 0, "expected non-empty string"); debug("enter: `%s`", type); context.events.push(["enter", token, context]); stack.push(token); return token; } function 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 ? ( // Looks like a construct. handleListOfConstructs([ /** @type {Construct} */ constructs2 ]) ) : handleMapOfConstructs(constructs2); function handleMapOfConstructs(map) { return start2; function start2(code2) { const left = code2 !== null && map[code2]; const all2 = code2 !== null && map.null; const list3 = [ // To do: add more extension tests. /* c8 ignore next 2 */ ...Array.isArray(left) ? left : left ? [left] : [], ...Array.isArray(all2) ? all2 : all2 ? [all2] : [] ]; return handleListOfConstructs(list3)(code2); } } function handleListOfConstructs(list3) { listOfConstructs = list3; constructIndex = 0; if (list3.length === 0) { ok(bogusState, "expected `bogusState` to be given"); return bogusState; } return handleConstruct(list3[constructIndex]); } function handleConstruct(construct) { return start2; function start2(code2) { info = store(); currentConstruct = construct; if (!construct.partial) { context.currentConstruct = construct; } ok( context.parser.constructs.disable.null, "expected `disable.null` to be populated" ); if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) { return nok(code2); } return construct.tokenize.call( // If we do have fields, create an object w/ `context` as its // prototype. // This allows a “live binding”, which is needed for `interrupt`. fields ? Object.assign(Object.create(context), fields) : context, effects, ok3, nok )(code2); } } function ok3(code2) { ok(code2 === expectedCode, "expected code"); consumed = true; onreturn(currentConstruct, info); return returnState; } function nok(code2) { ok(code2 === expectedCode, "expected code"); consumed = true; info.restore(); if (++constructIndex < listOfConstructs.length) { return handleConstruct(listOfConstructs[constructIndex]); } return bogusState; } } } function addResult(construct, from2) { if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { resolveAllConstructs.push(construct); } if (construct.resolve) { splice( context.events, from2, context.events.length - from2, construct.resolve(context.events.slice(from2), context) ); } if (construct.resolveTo) { context.events = construct.resolveTo(context.events, context); } ok( construct.partial || context.events.length === 0 || context.events[context.events.length - 1][0] === "exit", "expected last token to end" ); } function store() { const startPoint = now(); const startPrevious = context.previous; const startCurrentConstruct = context.currentConstruct; const startEventsIndex = context.events.length; const startStack = Array.from(stack); return { from: startEventsIndex, restore }; function restore() { point4 = startPoint; context.previous = startPrevious; context.currentConstruct = startCurrentConstruct; context.events.length = startEventsIndex; stack = startStack; accountForPotentialSkip(); debug("position: restore: `%j`", point4); } } function accountForPotentialSkip() { if (point4.line in columnStart && point4.column < 2) { point4.column = columnStart[point4.line]; point4.offset += columnStart[point4.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/parse.js function parse(options) { const settings = options || {}; const constructs2 = ( /** @type {FullNormalizedExtension} */ combineExtensions([constructs_exports, ...settings.extensions || []]) ); const parser = { constructs: constructs2, content: create2(content), defined: [], document: create2(document2), flow: create2(flow), lazy: {}, string: create2(string), text: create2(text2) }; return parser; function create2(initial) { return creator; function creator(from) { return createTokenizer(parser, initial, from); } } } // node_modules/micromark/dev/lib/postprocess.js function postprocess(events) { while (!subtokenize(events)) { } return events; } // node_modules/micromark/dev/lib/preprocess.js var search = /[\0\t\n\r]/g; function preprocess() { let column = 1; let buffer = ""; let start2 = true; let atCarriageReturn; return preprocessor; function preprocessor(value, encoding, end) { const chunks = []; let match; let next; let startPosition; let endPosition; let code2; value = buffer + (typeof value === "string" ? value.toString() : new TextDecoder(encoding || void 0).decode(value)); startPosition = 0; buffer = ""; if (start2) { if (value.charCodeAt(0) === codes.byteOrderMarker) { startPosition++; } start2 = void 0; } while (startPosition < value.length) { search.lastIndex = startPosition; match = search.exec(value); endPosition = match && match.index !== void 0 ? match.index : value.length; code2 = value.charCodeAt(endPosition); if (!match) { buffer = value.slice(startPosition); break; } if (code2 === codes.lf && startPosition === endPosition && atCarriageReturn) { chunks.push(codes.carriageReturnLineFeed); atCarriageReturn = void 0; } else { if (atCarriageReturn) { chunks.push(codes.carriageReturn); atCarriageReturn = void 0; } if (startPosition < endPosition) { chunks.push(value.slice(startPosition, endPosition)); column += endPosition - startPosition; } switch (code2) { case codes.nul: { chunks.push(codes.replacementCharacter); column++; break; } case codes.ht: { next = Math.ceil(column / constants.tabSize) * constants.tabSize; chunks.push(codes.horizontalTab); while (column++ < next) chunks.push(codes.virtualSpace); break; } case codes.lf: { chunks.push(codes.lineFeed); column = 1; break; } default: { atCarriageReturn = true; column = 1; } } } startPosition = endPosition + 1; } if (end) { if (atCarriageReturn) chunks.push(codes.carriageReturn); if (buffer) chunks.push(buffer); chunks.push(codes.eof); } return chunks; } } // node_modules/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/mdast-util-from-markdown/dev/lib/index.js var own2 = {}.hasOwnProperty; function fromMarkdown(value, encoding, options) { if (typeof encoding !== "string") { options = encoding; encoding = void 0; } return compiler(options)( postprocess( parse(options).document().write(preprocess()(value, encoding, true)) ) ); } function compiler(options) { const config = { transforms: [], canContainEols: ["emphasis", "fragment", "heading", "paragraph", "strong"], enter: { autolink: opener(link2), autolinkProtocol: onenterdata, autolinkEmail: onenterdata, atxHeading: opener(heading2), blockQuote: opener(blockQuote2), characterEscape: onenterdata, characterReference: onenterdata, codeFenced: opener(codeFlow), codeFencedFenceInfo: buffer, codeFencedFenceMeta: buffer, codeIndented: opener(codeFlow, buffer), codeText: opener(codeText2, buffer), codeTextData: onenterdata, data: onenterdata, codeFlowValue: onenterdata, definition: opener(definition2), definitionDestinationString: buffer, definitionLabelString: buffer, definitionTitleString: buffer, emphasis: opener(emphasis2), hardBreakEscape: opener(hardBreak2), hardBreakTrailing: opener(hardBreak2), htmlFlow: opener(html4, buffer), htmlFlowData: onenterdata, htmlText: opener(html4, buffer), htmlTextData: onenterdata, image: opener(image2), label: buffer, link: opener(link2), listItem: opener(listItem2), listItemValue: onenterlistitemvalue, listOrdered: opener(list3, onenterlistordered), listUnordered: opener(list3), paragraph: opener(paragraph2), reference: onenterreference, referenceString: buffer, resourceDestinationString: buffer, resourceTitleString: buffer, setextHeading: opener(heading2), strong: opener(strong2), thematicBreak: opener(thematicBreak3) }, exit: { atxHeading: closer(), atxHeadingSequence: onexitatxheadingsequence, autolink: closer(), autolinkEmail: onexitautolinkemail, autolinkProtocol: onexitautolinkprotocol, blockQuote: closer(), characterEscapeValue: onexitdata, characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, characterReferenceMarkerNumeric: onexitcharacterreferencemarker, characterReferenceValue: onexitcharacterreferencevalue, characterReference: onexitcharacterreference, codeFenced: closer(onexitcodefenced), codeFencedFence: onexitcodefencedfence, codeFencedFenceInfo: onexitcodefencedfenceinfo, codeFencedFenceMeta: onexitcodefencedfencemeta, codeFlowValue: onexitdata, codeIndented: closer(onexitcodeindented), codeText: closer(onexitcodetext), codeTextData: onexitdata, data: onexitdata, definition: closer(), definitionDestinationString: onexitdefinitiondestinationstring, definitionLabelString: onexitdefinitionlabelstring, definitionTitleString: onexitdefinitiontitlestring, emphasis: closer(), hardBreakEscape: closer(onexithardbreak), hardBreakTrailing: closer(onexithardbreak), htmlFlow: closer(onexithtmlflow), htmlFlowData: onexitdata, htmlText: closer(onexithtmltext), htmlTextData: onexitdata, image: closer(onexitimage), label: onexitlabel, labelText: onexitlabeltext, lineEnding: onexitlineending, link: closer(onexitlink), listItem: closer(), listOrdered: closer(), listUnordered: closer(), paragraph: closer(), referenceString: onexitreferencestring, resourceDestinationString: onexitresourcedestinationstring, resourceTitleString: onexitresourcetitlestring, resource: onexitresource, setextHeading: closer(onexitsetextheading), setextHeadingLineSequence: onexitsetextheadinglinesequence, setextHeadingText: onexitsetextheadingtext, strong: closer(), thematicBreak: closer() } }; configure(config, (options || {}).mdastExtensions || []); const data = {}; return compile2; function compile2(events) { let tree = { type: "root", children: [] }; const context = { stack: [tree], tokenStack: [], config, enter, exit: exit2, buffer, resume, data }; const listStack = []; let index2 = -1; while (++index2 < events.length) { if (events[index2][1].type === types.listOrdered || events[index2][1].type === types.listUnordered) { if (events[index2][0] === "enter") { listStack.push(index2); } else { const tail = listStack.pop(); ok(typeof tail === "number", "expected list ot be open"); index2 = prepareList(events, tail, index2); } } } index2 = -1; while (++index2 < events.length) { const handler = config[events[index2][0]]; if (own2.call(handler, events[index2][1].type)) { handler[events[index2][1].type].call( Object.assign( { sliceSerialize: events[index2][2].sliceSerialize }, context ), events[index2][1] ); } } if (context.tokenStack.length > 0) { const tail = context.tokenStack[context.tokenStack.length - 1]; const handler = tail[1] || defaultOnError; handler.call(context, void 0, tail[0]); } tree.position = { start: point3( events.length > 0 ? events[0][1].start : { line: 1, column: 1, offset: 0 } ), end: point3( events.length > 0 ? events[events.length - 2][1].end : { line: 1, column: 1, offset: 0 } ) }; index2 = -1; while (++index2 < config.transforms.length) { tree = config.transforms[index2](tree) || tree; } return tree; } function prepareList(events, start2, length) { let index2 = start2 - 1; let containerBalance = -1; let listSpread = false; let listItem3; let lineIndex; let firstBlankLineIndex; let atMarker; while (++index2 <= length) { const event = events[index2]; switch (event[1].type) { case types.listUnordered: case types.listOrdered: case types.blockQuote: { if (event[0] === "enter") { containerBalance++; } else { containerBalance--; } atMarker = void 0; break; } case types.lineEndingBlank: { if (event[0] === "enter") { if (listItem3 && !atMarker && !containerBalance && !firstBlankLineIndex) { firstBlankLineIndex = index2; } atMarker = void 0; } break; } case types.linePrefix: case types.listItemValue: case types.listItemMarker: case types.listItemPrefix: case types.listItemPrefixWhitespace: { break; } default: { atMarker = void 0; } } if (!containerBalance && event[0] === "enter" && event[1].type === types.listItemPrefix || containerBalance === -1 && event[0] === "exit" && (event[1].type === types.listUnordered || event[1].type === types.listOrdered)) { if (listItem3) { let tailIndex = index2; lineIndex = void 0; while (tailIndex--) { const tailEvent = events[tailIndex]; if (tailEvent[1].type === types.lineEnding || tailEvent[1].type === types.lineEndingBlank) { if (tailEvent[0] === "exit") continue; if (lineIndex) { events[lineIndex][1].type = types.lineEndingBlank; listSpread = true; } tailEvent[1].type = types.lineEnding; lineIndex = tailIndex; } else if (tailEvent[1].type === types.linePrefix || tailEvent[1].type === types.blockQuotePrefix || tailEvent[1].type === types.blockQuotePrefixWhitespace || tailEvent[1].type === types.blockQuoteMarker || tailEvent[1].type === types.listItemIndent) { } else { break; } } if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) { listItem3._spread = true; } listItem3.end = Object.assign( {}, lineIndex ? events[lineIndex][1].start : event[1].end ); events.splice(lineIndex || index2, 0, ["exit", listItem3, event[2]]); index2++; length++; } if (event[1].type === types.listItemPrefix) { const item = { type: "listItem", _spread: false, start: Object.assign({}, event[1].start), // @ts-expect-error: we’ll add `end` in a second. end: void 0 }; listItem3 = item; events.splice(index2, 0, ["enter", item, event[2]]); index2++; length++; firstBlankLineIndex = void 0; atMarker = true; } } } events[start2][1]._spread = listSpread; return length; } function opener(create2, and) { return open; function open(token) { enter.call(this, create2(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`"); const siblings = parent.children; siblings.push(node2); this.stack.push(node2); this.tokenStack.push([token, errorHandler || void 0]); node2.position = { start: point3(token.start), // @ts-expect-error: `end` will be patched later. end: void 0 }; } function closer(and) { return close; function close(token) { if (and) and.call(this, token); 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 = point3(token.end); } function resume() { return toString(this.stack.pop()); } function onenterlistordered() { this.data.expectingFirstListItemValue = true; } function onenterlistitemvalue(token) { if (this.data.expectingFirstListItemValue) { const ancestor = this.stack[this.stack.length - 2]; ok(ancestor, "expected nodes on stack"); ok(ancestor.type === "list", "expected list on stack"); ancestor.start = Number.parseInt( this.sliceSerialize(token), constants.numericBaseDecimal ); this.data.expectingFirstListItemValue = void 0; } } function onexitcodefencedfenceinfo() { const data2 = this.resume(); const 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 (this.data.flowCodeInside) return; this.buffer(); this.data.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, ""); this.data.flowCodeInside = void 0; } 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() { this.data.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).codePointAt(0) === codes.equalsTo ? 1 : 2; } function onexitsetextheading() { this.data.setextHeadingSlurpLineEnding = void 0; } 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"); const siblings = node2.children; let tail = siblings[siblings.length - 1]; if (!tail || tail.type !== "text") { tail = text5(); tail.position = { start: point3(token.start), // @ts-expect-error: we’ll add `end` later. end: void 0 }; siblings.push(tail); } this.stack.push(tail); } function onexitdata(token) { const tail = this.stack.pop(); ok(tail, "expected a `node` to be on the stack"); ok("value" in tail, "expected a `literal` to be on the stack"); ok(tail.position, "expected `node` to have an open position"); tail.value += this.sliceSerialize(token); tail.position.end = point3(token.end); } function onexitlineending(token) { const context = this.stack[this.stack.length - 1]; ok(context, "expected `node`"); if (this.data.atHardBreak) { ok("children" in context, "expected `parent`"); const tail = context.children[context.children.length - 1]; ok(tail.position, "expected tail to have a starting position"); tail.position.end = point3(token.end); this.data.atHardBreak = void 0; return; } if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) { onenterdata.call(this, token); onexitdata.call(this, token); } } function onexithardbreak() { this.data.atHardBreak = true; } function onexithtmlflow() { const data2 = this.resume(); const 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 (this.data.inReference) { const referenceType = this.data.referenceType || "shortcut"; node2.type += "Reference"; node2.referenceType = referenceType; delete node2.url; delete node2.title; } else { delete node2.identifier; delete node2.label; } this.data.referenceType = void 0; } 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 (this.data.inReference) { const referenceType = this.data.referenceType || "shortcut"; node2.type += "Reference"; node2.referenceType = referenceType; delete node2.url; delete node2.title; } else { delete node2.identifier; delete node2.label; } this.data.referenceType = void 0; } function onexitlabeltext(token) { const string3 = this.sliceSerialize(token); const ancestor = this.stack[this.stack.length - 2]; ok(ancestor, "expected ancestor on stack"); ok( ancestor.type === "image" || ancestor.type === "link", "expected image or link on stack" ); ancestor.label = decodeString(string3); ancestor.identifier = normalizeIdentifier(string3).toLowerCase(); } function onexitlabel() { const fragment = this.stack[this.stack.length - 1]; ok(fragment, "expected node on stack"); ok(fragment.type === "fragment", "expected fragment on stack"); const value = this.resume(); const 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" ); this.data.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() { this.data.inReference = void 0; } function onenterreference() { this.data.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(); this.data.referenceType = "full"; } function onexitcharacterreferencemarker(token) { ok( token.type === "characterReferenceMarkerNumeric" || token.type === "characterReferenceMarkerHexadecimal" ); this.data.characterReferenceType = token.type; } function onexitcharacterreferencevalue(token) { const data2 = this.sliceSerialize(token); const type = this.data.characterReferenceType; let value; if (type) { value = decodeNumericCharacterReference( data2, type === types.characterReferenceMarkerNumeric ? constants.numericBaseDecimal : constants.numericBaseHexadecimal ); this.data.characterReferenceType = void 0; } else { const result = decodeNamedCharacterReference(data2); ok(result !== false, "expected reference to decode"); value = result; } const tail = this.stack[this.stack.length - 1]; ok(tail, "expected `node`"); ok("value" in tail, "expected `node.value`"); tail.value += value; } function onexitcharacterreference(token) { const tail = this.stack.pop(); ok(tail, "expected `node`"); ok(tail.position, "expected `node.position`"); tail.position.end = point3(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 emphasis2() { return { type: "emphasis", children: [] }; } function heading2() { return { type: "heading", // @ts-expect-error `depth` will be set later. depth: 0, children: [] }; } function hardBreak2() { return { type: "break" }; } function html4() { return { type: "html", value: "" }; } function image2() { return { type: "image", title: null, url: "", alt: null }; } function link2() { return { type: "link", title: null, url: "", children: [] }; } function list3(token) { return { type: "list", ordered: token.type === "listOrdered", start: null, spread: token._spread, children: [] }; } function listItem2(token) { return { type: "listItem", spread: token._spread, checked: null, children: [] }; } function paragraph2() { return { type: "paragraph", children: [] }; } function strong2() { return { type: "strong", children: [] }; } function text5() { return { type: "text", value: "" }; } function thematicBreak3() { return { type: "thematicBreak" }; } } function point3(d) { return { line: d.line, column: d.column, offset: d.offset }; } function configure(combined, extensions) { let index2 = -1; while (++index2 < extensions.length) { const value = extensions[index2]; if (Array.isArray(value)) { configure(combined, value); } else { extension(combined, value); } } } function extension(combined, extension2) { let key; for (key in extension2) { if (own2.call(extension2, key)) { switch (key) { case "canContainEols": { const right = extension2[key]; if (right) { combined[key].push(...right); } break; } case "transforms": { const right = extension2[key]; if (right) { combined[key].push(...right); } break; } case "enter": case "exit": { const right = extension2[key]; if (right) { Object.assign(combined[key], right); } break; } } } } } function defaultOnError(left, right) { if (left) { throw new Error( "Cannot close `" + left.type + "` (" + stringifyPosition({ start: left.start, end: left.end }) + "): a different token (`" + right.type + "`, " + stringifyPosition({ start: right.start, end: right.end }) + ") is open" ); } else { throw new Error( "Cannot close document, a token (`" + right.type + "`, " + stringifyPosition({ start: right.start, end: right.end }) + ") is still open" ); } } // node_modules/remark-parse/lib/index.js function remarkParse(options) { const self2 = this; self2.parser = parser; function parser(doc) { return fromMarkdown(doc, { ...self2.data("settings"), ...options, // Note: these options are not in the readme. // The goal is for them to be set by plugins on `data` instead of being // passed by users. extensions: self2.data("micromarkExtensions") || [], mdastExtensions: self2.data("fromMarkdownExtensions") || [] }); } } // node_modules/mdast-util-to-hast/lib/handlers/blockquote.js function blockquote(state, node2) { const result = { type: "element", tagName: "blockquote", properties: {}, children: state.wrap(state.all(node2), true) }; state.patch(node2, result); return state.applyData(node2, result); } // node_modules/mdast-util-to-hast/lib/handlers/break.js function hardBreak(state, node2) { const result = { type: "element", tagName: "br", properties: {}, children: [] }; state.patch(node2, result); return [state.applyData(node2, result), { type: "text", value: "\n" }]; } // node_modules/mdast-util-to-hast/lib/handlers/code.js function code(state, node2) { const value = node2.value ? node2.value + "\n" : ""; const properties = {}; if (node2.lang) { properties