stream-markdown-parser 0.0.23 → 0.0.25
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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
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":";;;UAaiB,cAAA,SAAuB;sBAClB;;EADL,gBAAA,CAAe,EAAA,OAAA;;;;ECXf,CAAA;AAQjB;;;UARiB,QAAA;;EDWA,GAAA,EAAA,MAAA;;;;ACXjB;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;EAMA,QAAA,EA1DL,UA0DoB,EAAA;AAKhC;AAQiB,UApEA,aAAA,SAAsB,QAoEI,CAAA;EAO1B,IAAA,EAAA,WAAA;EAIA,QAAA,EA7EL,UA6EqB,EAAA;EASrB,aAAA,CAAA,EAAA,OAAc;AAS1B;AAKiB,UAhGA,UAAA,SAAmB,QAgGT,CAAA;EAEjB,IAAA,EAAA,QAAA;EACF,QAAA,EAjGI,UAiGJ,EAAA;EAH2B,OAAA,CAAA,EAAA,MAAA;;AAMlB,UAhGA,QAAA,SAAiB,QAkGzB,CAAA;EAGQ,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
|
@@ -100,7 +100,7 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
100
100
|
for (let i = 0; i < toks.length; i++) {
|
|
101
101
|
const t = toks[i];
|
|
102
102
|
if (t.type === "html_block") {
|
|
103
|
-
const tag = t.content?.match(/<([^\s>/]+)/)?.[1] ?? "";
|
|
103
|
+
const tag = (t.content?.match(/<([^\s>/]+)/)?.[1] ?? "").toLowerCase();
|
|
104
104
|
if (!/<\s*\/\s*[^\s>]+\s*>/.test(t.content || "")) tagStack.push([tag, i]);
|
|
105
105
|
else if (tagStack.length > 0 && tagStack[tagStack.length - 1][0] === tag) tagStack.pop();
|
|
106
106
|
continue;
|
|
@@ -111,7 +111,7 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
111
111
|
continue;
|
|
112
112
|
}
|
|
113
113
|
const content = t.content || "";
|
|
114
|
-
const isClosingTag =
|
|
114
|
+
const isClosingTag = new RegExp(`<\\s*\\/\\s*${tagStack[tagStack.length - 1][0]}\\s*>`, "i").test(content);
|
|
115
115
|
if (content) {
|
|
116
116
|
const [, openIndex] = tagStack[tagStack.length - 1];
|
|
117
117
|
const openToken = toks[openIndex];
|
|
@@ -126,7 +126,11 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
126
126
|
for (let i = 0; i < toks.length; i++) {
|
|
127
127
|
const t = toks[i];
|
|
128
128
|
if (t.type === "html_block") {
|
|
129
|
-
const tag = t.content?.match(/<([^\s>/]+)/)?.[1] ?? "";
|
|
129
|
+
const tag = (t.content?.match(/<([^\s>/]+)/)?.[1] ?? "").toLowerCase();
|
|
130
|
+
if (tag.startsWith("!") || tag.startsWith("?")) {
|
|
131
|
+
t.loading = false;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
130
134
|
if ([
|
|
131
135
|
"br",
|
|
132
136
|
"hr",
|
|
@@ -140,11 +144,11 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
140
144
|
"li"
|
|
141
145
|
].includes(tag)) continue;
|
|
142
146
|
t.type = "inline";
|
|
143
|
-
const loading = t.content?.includes(`</${tag}>`) ? false : t.loading !== void 0 ? t.loading : true;
|
|
147
|
+
const loading = t.content?.toLowerCase().includes(`</${tag}>`) ? false : t.loading !== void 0 ? t.loading : true;
|
|
144
148
|
t.children = [{
|
|
145
149
|
type: "html_block",
|
|
146
150
|
content: t.content,
|
|
147
|
-
tag
|
|
151
|
+
tag,
|
|
148
152
|
loading
|
|
149
153
|
}];
|
|
150
154
|
continue;
|
|
@@ -443,7 +447,7 @@ function fixLinkToken(tokens) {
|
|
|
443
447
|
const text = tokens[i - 1].content || "";
|
|
444
448
|
let href = tokens[i - 2].attrs?.[0]?.[1] || "";
|
|
445
449
|
let count = 3;
|
|
446
|
-
if (tokens[i].markup === "linkify" && tokens[i + 1]?.type === "text") {
|
|
450
|
+
if (tokens[i].markup === "linkify" && tokens[i + 1]?.type === "text" && !tokens[i + 1]?.content?.startsWith(" ")) {
|
|
447
451
|
const m = (tokens[i + 1]?.content ?? "").indexOf(")");
|
|
448
452
|
if (m === -1) {
|
|
449
453
|
href += tokens[i + 1]?.content?.slice(0, m) || "";
|
|
@@ -2052,6 +2056,13 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2052
2056
|
if (currentTextNode) {
|
|
2053
2057
|
currentTextNode.content += "\n";
|
|
2054
2058
|
currentTextNode.raw += "\n";
|
|
2059
|
+
} else {
|
|
2060
|
+
currentTextNode = {
|
|
2061
|
+
type: "text",
|
|
2062
|
+
content: "\n",
|
|
2063
|
+
raw: "\n"
|
|
2064
|
+
};
|
|
2065
|
+
result.push(currentTextNode);
|
|
2055
2066
|
}
|
|
2056
2067
|
i++;
|
|
2057
2068
|
break;
|
|
@@ -2198,6 +2209,10 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2198
2209
|
function handleTextToken(token) {
|
|
2199
2210
|
let index = result.length - 1;
|
|
2200
2211
|
let content = String(token.content ?? "").replace(/\\/g, "");
|
|
2212
|
+
if (content === "1" && tokens[i - 1]?.tag === "br") {
|
|
2213
|
+
i++;
|
|
2214
|
+
return;
|
|
2215
|
+
}
|
|
2201
2216
|
if (content.startsWith(")") && result[result.length - 1]?.type === "link") content = content.slice(1);
|
|
2202
2217
|
if (content.endsWith("undefined") && !raw?.endsWith("undefined")) content = content.slice(0, -9);
|
|
2203
2218
|
for (; index >= 0; index--) {
|
|
@@ -2583,6 +2598,20 @@ function parseMathBlock(token) {
|
|
|
2583
2598
|
|
|
2584
2599
|
//#endregion
|
|
2585
2600
|
//#region src/parser/node-parsers/table-parser.ts
|
|
2601
|
+
function extractAlign(attrs) {
|
|
2602
|
+
if (!attrs) return "left";
|
|
2603
|
+
for (const a of attrs) {
|
|
2604
|
+
if (!a) continue;
|
|
2605
|
+
const [key, val] = a;
|
|
2606
|
+
if (!val) continue;
|
|
2607
|
+
const value = String(val).trim().toLowerCase();
|
|
2608
|
+
if (key === "style") {
|
|
2609
|
+
const m = /text-align\s*:\s*(left|right|center)/i.exec(value);
|
|
2610
|
+
if (m) return m[1].toLowerCase();
|
|
2611
|
+
}
|
|
2612
|
+
}
|
|
2613
|
+
return "left";
|
|
2614
|
+
}
|
|
2586
2615
|
function parseTable(tokens, index) {
|
|
2587
2616
|
let j = index + 1;
|
|
2588
2617
|
let headerRow = null;
|
|
@@ -2602,11 +2631,13 @@ function parseTable(tokens, index) {
|
|
|
2602
2631
|
const isHeaderCell = tokens[k].type === "th_open";
|
|
2603
2632
|
const contentToken = tokens[k + 1];
|
|
2604
2633
|
const content = String(contentToken.content ?? "");
|
|
2634
|
+
const align = extractAlign(tokens[k].attrs);
|
|
2605
2635
|
cells.push({
|
|
2606
2636
|
type: "table_cell",
|
|
2607
2637
|
header: isHeaderCell || isHeader,
|
|
2608
2638
|
children: parseInlineTokens(contentToken.children || [], content),
|
|
2609
|
-
raw: content
|
|
2639
|
+
raw: content,
|
|
2640
|
+
align
|
|
2610
2641
|
});
|
|
2611
2642
|
k += 3;
|
|
2612
2643
|
} else k++;
|