stream-markdown-parser 0.0.69 → 0.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -20
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7535,6 +7535,8 @@ function applyContainers(md) {
|
|
|
7535
7535
|
let innerSrc = contentLines.join("\n");
|
|
7536
7536
|
if (!innerSrc.endsWith("\n")) innerSrc += "\n";
|
|
7537
7537
|
if (!innerSrc.endsWith("\n\n")) innerSrc += "\n";
|
|
7538
|
+
const prevToken = s.tokens[s.tokens.length - 1];
|
|
7539
|
+
if (prevToken) prevToken.raw = innerSrc;
|
|
7538
7540
|
const innerTokens = [];
|
|
7539
7541
|
s.md.block.parse(innerSrc, s.md, s.env, innerTokens);
|
|
7540
7542
|
s.tokens.push(...innerTokens);
|
|
@@ -9556,9 +9558,11 @@ function applyMath(md, mathOpts) {
|
|
|
9556
9558
|
["$", "$"],
|
|
9557
9559
|
["\\(", "\\)"]
|
|
9558
9560
|
];
|
|
9559
|
-
|
|
9560
|
-
|
|
9561
|
-
|
|
9561
|
+
const pending = String(s.pending ?? "");
|
|
9562
|
+
const currentStart = Math.max(0, s.pos - pending.length);
|
|
9563
|
+
let searchPos = currentStart;
|
|
9564
|
+
let preMathPos = currentStart;
|
|
9565
|
+
const initialPos = currentStart;
|
|
9562
9566
|
for (const [open, close] of delimiters) {
|
|
9563
9567
|
const src = s.src;
|
|
9564
9568
|
const codeSpanRanges = buildCodeSpanRanges(src);
|
|
@@ -10680,6 +10684,14 @@ function parseStrikethroughToken(tokens, startIndex, options) {
|
|
|
10680
10684
|
|
|
10681
10685
|
//#endregion
|
|
10682
10686
|
//#region src/parser/inline-parsers/strong-parser.ts
|
|
10687
|
+
const ESCAPED_PUNCTUATION_RE$1 = /\\([\\()[\]`$|*_\-!])/g;
|
|
10688
|
+
function resolveInnerRaw(raw, strongText) {
|
|
10689
|
+
if (!raw) return void 0;
|
|
10690
|
+
const rawText = String(raw);
|
|
10691
|
+
if (!rawText) return void 0;
|
|
10692
|
+
if (rawText === strongText) return rawText;
|
|
10693
|
+
if (rawText.replace(ESCAPED_PUNCTUATION_RE$1, "$1") === strongText) return rawText;
|
|
10694
|
+
}
|
|
10683
10695
|
function parseStrongToken(tokens, startIndex, raw, options) {
|
|
10684
10696
|
const children = [];
|
|
10685
10697
|
let strongText = "";
|
|
@@ -10696,7 +10708,7 @@ function parseStrongToken(tokens, startIndex, raw, options) {
|
|
|
10696
10708
|
innerTokens.push(tokens[i]);
|
|
10697
10709
|
i++;
|
|
10698
10710
|
}
|
|
10699
|
-
children.push(...parseInlineTokens(innerTokens, raw, void 0, {
|
|
10711
|
+
children.push(...parseInlineTokens(innerTokens, resolveInnerRaw(raw, strongText), void 0, {
|
|
10700
10712
|
requireClosingStrong: options?.requireClosingStrong,
|
|
10701
10713
|
final: options?.final,
|
|
10702
10714
|
customHtmlTags: options?.customHtmlTags,
|
|
@@ -10809,6 +10821,8 @@ const ESCAPABLE_PUNCTUATION = new Set([
|
|
|
10809
10821
|
"-",
|
|
10810
10822
|
"!"
|
|
10811
10823
|
]);
|
|
10824
|
+
const AUTOLINK_PROTOCOL_RE = /^(?:https?:\/\/|mailto:|ftp:\/\/)/i;
|
|
10825
|
+
const AUTOLINK_GENERIC_RE = /:\/\//;
|
|
10812
10826
|
function countUnescapedAsterisks(str) {
|
|
10813
10827
|
let count = 0;
|
|
10814
10828
|
let i = 0;
|
|
@@ -10890,6 +10904,16 @@ function getAsteriskRunInfo(content, start) {
|
|
|
10890
10904
|
intraword: isWordChar(prev) && isWordChar(next)
|
|
10891
10905
|
};
|
|
10892
10906
|
}
|
|
10907
|
+
function isLikelyUrl(href) {
|
|
10908
|
+
if (!href) return false;
|
|
10909
|
+
return AUTOLINK_PROTOCOL_RE.test(href) || AUTOLINK_GENERIC_RE.test(href);
|
|
10910
|
+
}
|
|
10911
|
+
function recoverTrailingMarkdownLinkLabel(raw, href) {
|
|
10912
|
+
if (!raw || !href) return null;
|
|
10913
|
+
const match = raw.match(/\[([^\]\n]+)\]\(([^)]*)$/);
|
|
10914
|
+
if (!match) return null;
|
|
10915
|
+
return match[2] === href ? match[1] : null;
|
|
10916
|
+
}
|
|
10893
10917
|
function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
10894
10918
|
if (!tokens || tokens.length === 0) return [];
|
|
10895
10919
|
const result = [];
|
|
@@ -11407,8 +11431,12 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
11407
11431
|
resetCurrentTextNode();
|
|
11408
11432
|
const displayText = String(token.text ?? "");
|
|
11409
11433
|
pushText(displayText, displayText);
|
|
11410
|
-
|
|
11411
|
-
i++;
|
|
11434
|
+
i++;
|
|
11435
|
+
} else if (recoverMarkdownLinkFromTrailingText(token)) i++;
|
|
11436
|
+
else {
|
|
11437
|
+
pushToken(token);
|
|
11438
|
+
i++;
|
|
11439
|
+
}
|
|
11412
11440
|
break;
|
|
11413
11441
|
}
|
|
11414
11442
|
}
|
|
@@ -11487,6 +11515,19 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
11487
11515
|
resetCurrentTextNode();
|
|
11488
11516
|
const { node, nextIndex } = parseLinkToken(tokens, i, options);
|
|
11489
11517
|
i = nextIndex;
|
|
11518
|
+
const hasSingleTextChild = node.children.length === 1 && node.children[0]?.type === "text";
|
|
11519
|
+
if (node.loading && raw && node.text === node.href && hasSingleTextChild) {
|
|
11520
|
+
const recoveredLabel = recoverTrailingMarkdownLinkLabel(raw, node.href);
|
|
11521
|
+
if (recoveredLabel) {
|
|
11522
|
+
node.text = recoveredLabel;
|
|
11523
|
+
node.children = [{
|
|
11524
|
+
type: "text",
|
|
11525
|
+
content: recoveredLabel,
|
|
11526
|
+
raw: recoveredLabel
|
|
11527
|
+
}];
|
|
11528
|
+
node.raw = String(`[${recoveredLabel}](${node.href}${node.title ? ` "${node.title}"` : ""})`);
|
|
11529
|
+
}
|
|
11530
|
+
}
|
|
11490
11531
|
if (options?.validateLink && !options.validateLink(node.href)) {
|
|
11491
11532
|
pushText(node.text, node.text);
|
|
11492
11533
|
return;
|
|
@@ -11503,23 +11544,43 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
11503
11544
|
}
|
|
11504
11545
|
}
|
|
11505
11546
|
}
|
|
11547
|
+
if (recoverMarkdownLinkFromTrailingText(node)) return;
|
|
11506
11548
|
pushParsed(node);
|
|
11507
11549
|
}
|
|
11508
11550
|
function handleReference(token) {
|
|
11509
11551
|
resetCurrentTextNode();
|
|
11510
|
-
|
|
11511
|
-
const preToken = tokens[i - 1];
|
|
11512
|
-
const preResult = result[result.length - 1];
|
|
11513
|
-
const nextIsTextNotStartingParens = nextToken?.type === "text" && !String(nextToken.content ?? "").startsWith("(");
|
|
11514
|
-
const preIsTextEndingBracketOrOnlySpace = preToken?.type === "text" && /\]$|^\s*$/.test(String(preToken.content ?? ""));
|
|
11515
|
-
if (nextIsTextNotStartingParens || preIsTextEndingBracketOrOnlySpace) pushNode(parseReferenceToken(token));
|
|
11516
|
-
else if (nextToken && nextToken.type === "text") nextToken.content = String(token.markup ?? "") + String(nextToken.content ?? "");
|
|
11517
|
-
else if (preResult && preResult.type === "text") {
|
|
11518
|
-
preResult.content = String(preResult.content ?? "") + String(token.markup ?? "");
|
|
11519
|
-
preResult.raw = String(preResult.raw ?? "") + String(token.markup ?? "");
|
|
11520
|
-
}
|
|
11552
|
+
pushNode(parseReferenceToken(token));
|
|
11521
11553
|
i++;
|
|
11522
11554
|
}
|
|
11555
|
+
function recoverMarkdownLinkFromTrailingText(token) {
|
|
11556
|
+
if (token.type !== "link") return false;
|
|
11557
|
+
const previous = result[result.length - 1];
|
|
11558
|
+
if (!previous || previous.type !== "text") return false;
|
|
11559
|
+
const match = String(previous.content ?? "").match(/^(.*)\[([^\]\n]+)\]\($/);
|
|
11560
|
+
if (!match) return false;
|
|
11561
|
+
const linkToken = token;
|
|
11562
|
+
const href = String(linkToken.href ?? "");
|
|
11563
|
+
const linkText = String(linkToken.text ?? "");
|
|
11564
|
+
const label = String(match[2] ?? "");
|
|
11565
|
+
const visibleHref = href.replace(/^(?:https?:\/\/|mailto:|ftp:\/\/)/i, "");
|
|
11566
|
+
if (!href || !(linkText === href || linkText === visibleHref || isLikelyUrl(linkText))) return false;
|
|
11567
|
+
const before = String(match[1] ?? "");
|
|
11568
|
+
if (before) {
|
|
11569
|
+
previous.content = before;
|
|
11570
|
+
previous.raw = before;
|
|
11571
|
+
} else result.pop();
|
|
11572
|
+
pushParsed({
|
|
11573
|
+
...token,
|
|
11574
|
+
text: label,
|
|
11575
|
+
children: [{
|
|
11576
|
+
type: "text",
|
|
11577
|
+
content: label,
|
|
11578
|
+
raw: label
|
|
11579
|
+
}],
|
|
11580
|
+
raw: String(`[${label}](${href}${linkToken.title ? ` "${linkToken.title}"` : ""})`)
|
|
11581
|
+
});
|
|
11582
|
+
return true;
|
|
11583
|
+
}
|
|
11523
11584
|
function handleInlineLinkContent(content, _token) {
|
|
11524
11585
|
const linkStart = content.indexOf("[");
|
|
11525
11586
|
if (linkStart === -1) return false;
|
|
@@ -12322,7 +12383,8 @@ function getHtmlTagSets(customTags) {
|
|
|
12322
12383
|
return entry;
|
|
12323
12384
|
}
|
|
12324
12385
|
function parseVmrContainer(tokens, index, options) {
|
|
12325
|
-
const
|
|
12386
|
+
const openToken = tokens[index];
|
|
12387
|
+
const attrs = openToken.attrs;
|
|
12326
12388
|
let name = "";
|
|
12327
12389
|
const containerAttrs = {};
|
|
12328
12390
|
if (attrs) {
|
|
@@ -12377,7 +12439,7 @@ function parseVmrContainer(tokens, index, options) {
|
|
|
12377
12439
|
if (Object.keys(containerAttrs).length > 0) raw += ` ${JSON.stringify(containerAttrs)}`;
|
|
12378
12440
|
raw += "\n";
|
|
12379
12441
|
if (children.length > 0) {
|
|
12380
|
-
raw += children.map((c) => c.raw).join("\n");
|
|
12442
|
+
raw += openToken.raw ?? children.map((c) => c.raw).join("\n");
|
|
12381
12443
|
raw += "\n";
|
|
12382
12444
|
}
|
|
12383
12445
|
raw += ":::";
|
|
@@ -13570,6 +13632,15 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
|
|
|
13570
13632
|
</div>`;
|
|
13571
13633
|
};
|
|
13572
13634
|
const RE_REFERENCE = /^\[(\d+)\]/;
|
|
13635
|
+
const RE_REFERENCE_LABEL = /^\[([^\]\n]+)\]/;
|
|
13636
|
+
const shouldPreserveReferenceStyleLink = (afterMatch) => {
|
|
13637
|
+
if (!afterMatch.startsWith("[")) return false;
|
|
13638
|
+
const nextLabelMatch = RE_REFERENCE_LABEL.exec(afterMatch);
|
|
13639
|
+
if (!nextLabelMatch) return afterMatch !== "[" && !/^\[\d+$/.test(afterMatch);
|
|
13640
|
+
const nextLabel = String(nextLabelMatch[1] ?? "");
|
|
13641
|
+
if (afterMatch.slice(nextLabelMatch[0].length).startsWith("(")) return false;
|
|
13642
|
+
return !/^\d+$/.test(nextLabel);
|
|
13643
|
+
};
|
|
13573
13644
|
const referenceInline = (state, silent) => {
|
|
13574
13645
|
const s = state;
|
|
13575
13646
|
if (s.src[s.pos] !== "[") return false;
|
|
@@ -13578,7 +13649,7 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
|
|
|
13578
13649
|
const lookbehind = s.src.slice(Math.max(0, s.pos - 120), s.pos);
|
|
13579
13650
|
if (/"[^"\n]{1,80}"\s*:\s*$/.test(lookbehind)) return false;
|
|
13580
13651
|
const afterMatch = s.src.slice(s.pos + match[0].length);
|
|
13581
|
-
if (afterMatch.startsWith("](") || afterMatch.startsWith("(") || afterMatch
|
|
13652
|
+
if (afterMatch.startsWith("](") || afterMatch.startsWith("(") || shouldPreserveReferenceStyleLink(afterMatch)) return false;
|
|
13582
13653
|
if (!silent) {
|
|
13583
13654
|
const id = match[1];
|
|
13584
13655
|
const token = s.push("reference", "span", 0);
|