stream-markdown-parser 0.0.36 → 0.0.38
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 +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +150 -81
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ interface HtmlBlockNode extends BaseNode {
|
|
|
70
70
|
}
|
|
71
71
|
interface HtmlInlineNode extends BaseNode {
|
|
72
72
|
type: 'html_inline';
|
|
73
|
+
tag?: string;
|
|
73
74
|
content: string;
|
|
74
75
|
children: ParsedNode[];
|
|
75
76
|
}
|
|
@@ -232,7 +233,7 @@ type MarkdownToken = (Token & {
|
|
|
232
233
|
loading?: boolean;
|
|
233
234
|
raw?: string;
|
|
234
235
|
}) | MarkdownTokenLite;
|
|
235
|
-
type ParsedNode = TextNode | HeadingNode | ParagraphNode | ListNode | ListItemNode | CodeBlockNode | InlineCodeNode | LinkNode | ImageNode | ThematicBreakNode | BlockquoteNode | TableNode | TableRowNode | TableCellNode | StrongNode | EmphasisNode | StrikethroughNode | HighlightNode | InsertNode | SubscriptNode | SuperscriptNode | CheckboxNode | CheckboxInputNode | EmojiNode | DefinitionListNode | DefinitionItemNode | FootnoteNode | FootnoteReferenceNode | AdmonitionNode | HardBreakNode | MathInlineNode | MathBlockNode | ReferenceNode | HtmlBlockNode | Record<string, unknown>;
|
|
236
|
+
type ParsedNode = TextNode | HeadingNode | ParagraphNode | ListNode | ListItemNode | CodeBlockNode | InlineCodeNode | LinkNode | ImageNode | ThematicBreakNode | BlockquoteNode | TableNode | TableRowNode | TableCellNode | StrongNode | EmphasisNode | StrikethroughNode | HighlightNode | InsertNode | SubscriptNode | SuperscriptNode | CheckboxNode | CheckboxInputNode | EmojiNode | DefinitionListNode | DefinitionItemNode | FootnoteNode | FootnoteReferenceNode | AdmonitionNode | HardBreakNode | MathInlineNode | MathBlockNode | ReferenceNode | HtmlBlockNode | HtmlInlineNode | Record<string, unknown>;
|
|
236
237
|
interface CustomComponents {
|
|
237
238
|
text: unknown;
|
|
238
239
|
paragraph: unknown;
|
|
@@ -261,6 +262,7 @@ interface CustomComponents {
|
|
|
261
262
|
emoji: unknown;
|
|
262
263
|
checkbox: unknown;
|
|
263
264
|
inline_code: unknown;
|
|
265
|
+
html_inline: unknown;
|
|
264
266
|
reference: unknown;
|
|
265
267
|
mermaid: unknown;
|
|
266
268
|
[key: string]: unknown;
|
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":";;;UAYiB,cAAA,SAAuB;sBAClB;;EADL,gBAAA,CAAe,EAAA,OAAA;;;;ECVf,CAAA;AAQjB;;;UARiB,QAAA;;EDUA,GAAA,EAAA,MAAA;;;;ACVjB;AAQiB,UAAA,QAAA,SAAiB,QAAQ,CAAA;EAMzB,IAAA,EAAA,MAAA;EAOA,OAAA,EAAA,MAAA;EAMA,MAAA,CAAA,EAAA,OAAW;AAM5B;AAQiB,UA3BA,WAAA,SAAoB,QA2BC,CAAA;EAKrB,IAAA,EAAA,SAAA;EAiBA,KAAA,EAAA,MAAA;EAOA,IAAA,EAAA,MAAA;
|
|
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
|
@@ -6804,7 +6804,7 @@ function applyContainers(md) {
|
|
|
6804
6804
|
|
|
6805
6805
|
//#endregion
|
|
6806
6806
|
//#region src/plugins/fixHtmlInline.ts
|
|
6807
|
-
const VOID_TAGS$
|
|
6807
|
+
const VOID_TAGS$2 = new Set([
|
|
6808
6808
|
"area",
|
|
6809
6809
|
"base",
|
|
6810
6810
|
"br",
|
|
@@ -6838,14 +6838,14 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
6838
6838
|
continue;
|
|
6839
6839
|
}
|
|
6840
6840
|
const content = t.content || "";
|
|
6841
|
-
const isClosingTag = new RegExp(`<\\s*\\/\\s*${tagStack[tagStack.length - 1][0]}\\s*>`, "i").test(content);
|
|
6841
|
+
const isClosingTag$1 = new RegExp(`<\\s*\\/\\s*${tagStack[tagStack.length - 1][0]}\\s*>`, "i").test(content);
|
|
6842
6842
|
if (content) {
|
|
6843
6843
|
const [, openIndex] = tagStack[tagStack.length - 1];
|
|
6844
6844
|
const openToken = toks[openIndex];
|
|
6845
6845
|
openToken.content = `${openToken.content || ""}\n${content}`;
|
|
6846
|
-
if (openToken.loading !== false) openToken.loading = !isClosingTag;
|
|
6846
|
+
if (openToken.loading !== false) openToken.loading = !isClosingTag$1;
|
|
6847
6847
|
}
|
|
6848
|
-
if (isClosingTag) tagStack.pop();
|
|
6848
|
+
if (isClosingTag$1) tagStack.pop();
|
|
6849
6849
|
toks.splice(i, 1);
|
|
6850
6850
|
i--;
|
|
6851
6851
|
} else continue;
|
|
@@ -6930,7 +6930,7 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
6930
6930
|
const raw = String(t.content);
|
|
6931
6931
|
const tagName = raw.match(/<([^\s>/]+)/)?.[1]?.toLowerCase() ?? "";
|
|
6932
6932
|
if (!tagName) continue;
|
|
6933
|
-
const isVoid = /\/\s*>\s*$/.test(raw) || VOID_TAGS$
|
|
6933
|
+
const isVoid = /\/\s*>\s*$/.test(raw) || VOID_TAGS$2.has(tagName);
|
|
6934
6934
|
const htmlToken = t;
|
|
6935
6935
|
if (isVoid) {
|
|
6936
6936
|
htmlToken.children = [{
|
|
@@ -7167,10 +7167,9 @@ function fixLinkToken(tokens) {
|
|
|
7167
7167
|
}
|
|
7168
7168
|
}
|
|
7169
7169
|
if (curToken.type === "link_close" && curToken.nesting === -1 && tokens[i + 1]?.type === "text" && tokens[i - 1]?.type === "text") {
|
|
7170
|
-
let loading = true;
|
|
7171
7170
|
const text$1 = tokens[i - 1].content || "";
|
|
7172
7171
|
const attrs = tokens[i - 2].attrs || [];
|
|
7173
|
-
|
|
7172
|
+
const href = attrs.find((a) => a[0] === "href")?.[1] || "";
|
|
7174
7173
|
const title = attrs.find((a) => a[0] === "title")?.[1] || "";
|
|
7175
7174
|
let count = 3;
|
|
7176
7175
|
let deleteCount = 2;
|
|
@@ -7181,37 +7180,22 @@ function fixLinkToken(tokens) {
|
|
|
7181
7180
|
const type = emphasisMatch[1].length;
|
|
7182
7181
|
pushEmOpen(replacerTokens, type);
|
|
7183
7182
|
}
|
|
7184
|
-
if (curToken.markup
|
|
7185
|
-
if (curToken.markup === "linkify" && tokens[i + 1]?.type === "text" && !tokens[i + 1]?.content?.startsWith(" ")) {
|
|
7186
|
-
const m = (tokens[i + 1]?.content ?? "").indexOf(")");
|
|
7187
|
-
if (m === -1) {
|
|
7188
|
-
href += tokens[i + 1]?.content?.slice(0, m) || "";
|
|
7189
|
-
tokens[i + 1].content = "";
|
|
7190
|
-
count += 1;
|
|
7191
|
-
} else loading = false;
|
|
7192
|
-
} else if (tokens[i + 1].type === "text" && tokens[i + 1]?.content?.startsWith("](")) {
|
|
7183
|
+
if (curToken.markup !== "linkify" && tokens[i + 1].type === "text" && tokens[i + 1]?.content?.startsWith("](")) {
|
|
7193
7184
|
count += 1;
|
|
7194
7185
|
for (let j = i + 1; j < tokens.length; j++) {
|
|
7195
7186
|
const type = emphasisMatch ? emphasisMatch[1].length : tokens[i - 3].markup.length;
|
|
7196
7187
|
const t = tokens[j];
|
|
7197
|
-
if (type === 1 && t.type === "em_close")
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
|
|
7201
|
-
loading = false;
|
|
7202
|
-
break;
|
|
7203
|
-
} else if (type === 3) {
|
|
7204
|
-
if (t.type === "em_close" || t.type === "strong_close") {
|
|
7205
|
-
loading = false;
|
|
7206
|
-
break;
|
|
7207
|
-
}
|
|
7188
|
+
if (type === 1 && t.type === "em_close") break;
|
|
7189
|
+
else if (type === 2 && t.type === "strong_close") break;
|
|
7190
|
+
else if (type === 3) {
|
|
7191
|
+
if (t.type === "em_close" || t.type === "strong_close") break;
|
|
7208
7192
|
}
|
|
7209
7193
|
count += 1;
|
|
7210
7194
|
}
|
|
7211
|
-
}
|
|
7195
|
+
}
|
|
7212
7196
|
replacerTokens.push({
|
|
7213
7197
|
type: "link",
|
|
7214
|
-
loading,
|
|
7198
|
+
loading: false,
|
|
7215
7199
|
href,
|
|
7216
7200
|
title,
|
|
7217
7201
|
text: text$1,
|
|
@@ -8426,65 +8410,150 @@ function parseHighlightToken(tokens, startIndex, options) {
|
|
|
8426
8410
|
|
|
8427
8411
|
//#endregion
|
|
8428
8412
|
//#region src/parser/inline-parsers/html-inline-code-parser.ts
|
|
8429
|
-
|
|
8430
|
-
|
|
8431
|
-
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
|
|
8435
|
-
|
|
8436
|
-
|
|
8437
|
-
|
|
8413
|
+
const VOID_TAGS$1 = new Set([
|
|
8414
|
+
"area",
|
|
8415
|
+
"base",
|
|
8416
|
+
"br",
|
|
8417
|
+
"col",
|
|
8418
|
+
"embed",
|
|
8419
|
+
"hr",
|
|
8420
|
+
"img",
|
|
8421
|
+
"input",
|
|
8422
|
+
"link",
|
|
8423
|
+
"meta",
|
|
8424
|
+
"param",
|
|
8425
|
+
"source",
|
|
8426
|
+
"track",
|
|
8427
|
+
"wbr"
|
|
8428
|
+
]);
|
|
8429
|
+
function getTagName(html) {
|
|
8430
|
+
const match = html.match(/^<\s*(?:\/\s*)?([\w-]+)/);
|
|
8431
|
+
return match ? match[1].toLowerCase() : "";
|
|
8432
|
+
}
|
|
8433
|
+
function isClosingTag(html) {
|
|
8434
|
+
return /^<\s*\//.test(html);
|
|
8435
|
+
}
|
|
8436
|
+
function isSelfClosing(tag, html) {
|
|
8437
|
+
return /\/\s*>\s*$/.test(html) || VOID_TAGS$1.has(tag);
|
|
8438
|
+
}
|
|
8439
|
+
function tokenToRaw(token) {
|
|
8440
|
+
const shape = token;
|
|
8441
|
+
const raw = shape.raw ?? shape.content ?? shape.markup ?? "";
|
|
8442
|
+
return String(raw ?? "");
|
|
8443
|
+
}
|
|
8444
|
+
function stringifyTokens(tokens) {
|
|
8445
|
+
return tokens.map(tokenToRaw).join("");
|
|
8446
|
+
}
|
|
8447
|
+
function findMatchingClosing(tokens, startIndex, tag) {
|
|
8448
|
+
let depth = 0;
|
|
8449
|
+
for (let idx = startIndex; idx < tokens.length; idx++) {
|
|
8450
|
+
const t = tokens[idx];
|
|
8451
|
+
if (t.type !== "html_inline") continue;
|
|
8452
|
+
const content = String(t.content ?? "");
|
|
8453
|
+
const tTag = getTagName(content);
|
|
8454
|
+
const closing = isClosingTag(content);
|
|
8455
|
+
const selfClosing = isSelfClosing(tTag, content);
|
|
8456
|
+
if (!closing && !selfClosing && tTag === tag) {
|
|
8457
|
+
depth++;
|
|
8458
|
+
continue;
|
|
8459
|
+
}
|
|
8460
|
+
if (closing && tTag === tag) {
|
|
8461
|
+
if (depth === 0) return idx;
|
|
8462
|
+
depth--;
|
|
8463
|
+
}
|
|
8464
|
+
}
|
|
8465
|
+
return -1;
|
|
8466
|
+
}
|
|
8467
|
+
function collectHtmlFragment(tokens, startIndex, tag) {
|
|
8468
|
+
const fragmentTokens = [tokens[startIndex]];
|
|
8469
|
+
let innerTokens = [];
|
|
8470
|
+
let nextIndex = startIndex + 1;
|
|
8471
|
+
let closed = false;
|
|
8472
|
+
const closingIndex = tag ? findMatchingClosing(tokens, startIndex + 1, tag) : -1;
|
|
8473
|
+
if (closingIndex !== -1) {
|
|
8474
|
+
innerTokens = tokens.slice(startIndex + 1, closingIndex);
|
|
8475
|
+
fragmentTokens.push(...innerTokens, tokens[closingIndex]);
|
|
8476
|
+
nextIndex = closingIndex + 1;
|
|
8477
|
+
closed = true;
|
|
8478
|
+
} else if (tokens[startIndex + 1]?.type === "text") {
|
|
8479
|
+
innerTokens = [tokens[startIndex + 1]];
|
|
8480
|
+
fragmentTokens.push(tokens[startIndex + 1]);
|
|
8481
|
+
nextIndex = startIndex + 2;
|
|
8438
8482
|
}
|
|
8483
|
+
return {
|
|
8484
|
+
closed,
|
|
8485
|
+
html: stringifyTokens(fragmentTokens),
|
|
8486
|
+
innerTokens,
|
|
8487
|
+
nextIndex
|
|
8488
|
+
};
|
|
8489
|
+
}
|
|
8490
|
+
function parseHtmlInlineCodeToken(token, tokens, i, parseInlineTokens$1, raw, pPreToken, options) {
|
|
8491
|
+
const code$1 = String(token.content ?? "");
|
|
8492
|
+
const tag = getTagName(code$1);
|
|
8493
|
+
if (!tag) return [{
|
|
8494
|
+
type: "inline_code",
|
|
8495
|
+
code: code$1,
|
|
8496
|
+
raw: code$1
|
|
8497
|
+
}, i + 1];
|
|
8439
8498
|
if (tag === "br") return [{
|
|
8440
8499
|
type: "hardbreak",
|
|
8441
8500
|
raw: code$1
|
|
8442
8501
|
}, i + 1];
|
|
8502
|
+
const closing = isClosingTag(code$1);
|
|
8503
|
+
const selfClosing = isSelfClosing(tag, code$1);
|
|
8504
|
+
if (closing) return [{
|
|
8505
|
+
type: "html_inline",
|
|
8506
|
+
tag,
|
|
8507
|
+
content: code$1,
|
|
8508
|
+
children: [],
|
|
8509
|
+
raw: code$1,
|
|
8510
|
+
loading: false
|
|
8511
|
+
}, i + 1];
|
|
8443
8512
|
if (tag === "a") {
|
|
8444
|
-
|
|
8445
|
-
|
|
8446
|
-
|
|
8447
|
-
|
|
8448
|
-
|
|
8449
|
-
|
|
8450
|
-
|
|
8451
|
-
|
|
8452
|
-
|
|
8453
|
-
|
|
8454
|
-
|
|
8455
|
-
const inner = code$1 || href || "";
|
|
8456
|
-
return [{
|
|
8457
|
-
type: "link",
|
|
8458
|
-
href: String(href ?? ""),
|
|
8459
|
-
title: null,
|
|
8460
|
-
text: code$1,
|
|
8461
|
-
children: [{
|
|
8462
|
-
type: "text",
|
|
8463
|
-
content: inner,
|
|
8464
|
-
raw: inner
|
|
8465
|
-
}],
|
|
8466
|
-
loading,
|
|
8467
|
-
raw: code$1
|
|
8468
|
-
}, index];
|
|
8469
|
-
}
|
|
8470
|
-
}
|
|
8471
|
-
if (tag === "p" || tag === "div") {
|
|
8472
|
-
const inner = extractInner(code$1) || "";
|
|
8513
|
+
const fragment$1 = collectHtmlFragment(tokens, i, tag);
|
|
8514
|
+
const innerTokens = fragment$1.innerTokens;
|
|
8515
|
+
const hrefMatch = code$1.match(/href\s*=\s*"([^"]+)"|href\s*=\s*'([^']+)'|href\s*=\s*([^\s>]+)/i);
|
|
8516
|
+
const href = hrefMatch ? hrefMatch[1] || hrefMatch[2] || hrefMatch[3] : "";
|
|
8517
|
+
const children$1 = innerTokens.length ? parseInlineTokens$1(innerTokens, raw, pPreToken, options) : [];
|
|
8518
|
+
const textContent = innerTokens.length ? stringifyTokens(innerTokens) : href || "";
|
|
8519
|
+
if (!children$1.length && textContent) children$1.push({
|
|
8520
|
+
type: "text",
|
|
8521
|
+
content: textContent,
|
|
8522
|
+
raw: textContent
|
|
8523
|
+
});
|
|
8473
8524
|
return [{
|
|
8474
|
-
type: "
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
raw: code$1
|
|
8481
|
-
},
|
|
8482
|
-
}
|
|
8483
|
-
return [{
|
|
8484
|
-
type: "
|
|
8485
|
-
|
|
8486
|
-
|
|
8525
|
+
type: "link",
|
|
8526
|
+
href: String(href ?? ""),
|
|
8527
|
+
title: null,
|
|
8528
|
+
text: textContent,
|
|
8529
|
+
children: children$1,
|
|
8530
|
+
loading: !fragment$1.closed,
|
|
8531
|
+
raw: fragment$1.html || code$1
|
|
8532
|
+
}, fragment$1.nextIndex];
|
|
8533
|
+
}
|
|
8534
|
+
if (selfClosing) return [{
|
|
8535
|
+
type: "html_inline",
|
|
8536
|
+
tag,
|
|
8537
|
+
content: code$1,
|
|
8538
|
+
children: [],
|
|
8539
|
+
raw: code$1,
|
|
8540
|
+
loading: false
|
|
8487
8541
|
}, i + 1];
|
|
8542
|
+
const fragment = collectHtmlFragment(tokens, i, tag);
|
|
8543
|
+
if (tag === "p" || tag === "div") return [{
|
|
8544
|
+
type: "paragraph",
|
|
8545
|
+
children: fragment.innerTokens.length ? parseInlineTokens$1(fragment.innerTokens, raw, pPreToken, options) : [],
|
|
8546
|
+
raw: fragment.html
|
|
8547
|
+
}, fragment.nextIndex];
|
|
8548
|
+
const children = fragment.innerTokens.length ? parseInlineTokens$1(fragment.innerTokens, raw, pPreToken, options) : [];
|
|
8549
|
+
return [{
|
|
8550
|
+
type: "html_inline",
|
|
8551
|
+
tag,
|
|
8552
|
+
content: fragment.html || code$1,
|
|
8553
|
+
children,
|
|
8554
|
+
raw: fragment.html || code$1,
|
|
8555
|
+
loading: !fragment.closed
|
|
8556
|
+
}, fragment.nextIndex];
|
|
8488
8557
|
}
|
|
8489
8558
|
|
|
8490
8559
|
//#endregion
|
|
@@ -9022,7 +9091,7 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
9022
9091
|
i++;
|
|
9023
9092
|
break;
|
|
9024
9093
|
case "html_inline": {
|
|
9025
|
-
const [node, index] = parseHtmlInlineCodeToken(token, tokens, i);
|
|
9094
|
+
const [node, index] = parseHtmlInlineCodeToken(token, tokens, i, parseInlineTokens, raw, pPreToken, options);
|
|
9026
9095
|
pushNode(node);
|
|
9027
9096
|
i = index;
|
|
9028
9097
|
break;
|