stream-markdown-parser 0.0.9 → 0.0.11
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 +108 -102
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
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
|
@@ -106,7 +106,20 @@ function applyFixLinkInline(md) {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
//#endregion
|
|
109
|
-
//#region src/
|
|
109
|
+
//#region src/plugins/fixLinkTokens.ts
|
|
110
|
+
function applyFixLinkTokens(md) {
|
|
111
|
+
md.core.ruler.after("inline", "fix_link_tokens", (state) => {
|
|
112
|
+
const toks = state.tokens ?? [];
|
|
113
|
+
for (let i = 0; i < toks.length; i++) {
|
|
114
|
+
const t = toks[i];
|
|
115
|
+
if (t && t.type === "inline" && Array.isArray(t.children)) try {
|
|
116
|
+
t.children = fixLinkToken(t.children);
|
|
117
|
+
} catch (e) {
|
|
118
|
+
console.error("[applyFixLinkTokens] failed to fix inline children", e);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
110
123
|
function isTextToken(t) {
|
|
111
124
|
return !!t && t.type === "text" && typeof t.content === "string";
|
|
112
125
|
}
|
|
@@ -147,6 +160,7 @@ function fixLinkTokens2(tokens) {
|
|
|
147
160
|
if (tokens.length < 8) return tokens;
|
|
148
161
|
let length = tokens.length;
|
|
149
162
|
let last = tokens[length - 1];
|
|
163
|
+
if (!last) return tokens;
|
|
150
164
|
if (last.type !== "link_close") {
|
|
151
165
|
length--;
|
|
152
166
|
last = tokens[length - 1];
|
|
@@ -186,6 +200,7 @@ function fixLinkToken3(tokens) {
|
|
|
186
200
|
const last = tokens[tokens.length - 1];
|
|
187
201
|
const preLast = tokens[tokens.length - 2];
|
|
188
202
|
const fixedTokens = [...tokens];
|
|
203
|
+
if (!last) return tokens;
|
|
189
204
|
if (last.type !== "text" || !last.content?.startsWith(")")) return tokens;
|
|
190
205
|
if (preLast.type !== "link_close") return tokens;
|
|
191
206
|
if (isTextToken(tokens[tokens.length - 5]) && String(tokens[tokens.length - 5].content ?? "").endsWith("(")) {
|
|
@@ -209,34 +224,37 @@ function fixLinkToken3(tokens) {
|
|
|
209
224
|
function fixLinkToken4(tokens) {
|
|
210
225
|
const tokensAny = tokens;
|
|
211
226
|
const fixedTokens = [...tokens];
|
|
212
|
-
for (let i = tokens.length - 1; i >= 3; i--)
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if (
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
227
|
+
for (let i = tokens.length - 1; i >= 3; i--) {
|
|
228
|
+
const token = tokens[i];
|
|
229
|
+
if (token && token.type === "link_close") {
|
|
230
|
+
if (tokens[i - 3]?.content?.endsWith("(")) {
|
|
231
|
+
const nextToken = tokens[i + 1];
|
|
232
|
+
if (nextToken && nextToken?.type === "text") {
|
|
233
|
+
if (tokens[i - 1].type === "text" && tokens[i - 3]?.type === "text") {
|
|
234
|
+
const nextTokenContent = String(nextToken.content ?? "");
|
|
235
|
+
const a = tokensAny[i - 3];
|
|
236
|
+
const b = tokensAny[i - 1];
|
|
237
|
+
const content = String(a.content ?? "") + String(b.content ?? "") + nextTokenContent;
|
|
238
|
+
fixedTokens.splice(i - 3, 5, {
|
|
239
|
+
type: "text",
|
|
240
|
+
content,
|
|
241
|
+
raw: content
|
|
242
|
+
});
|
|
243
|
+
i -= 3;
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
if (tokens[i - 1].type === "text" && tokens[i - 3]?.type === "text") {
|
|
247
|
+
const a = tokensAny[i - 3];
|
|
248
|
+
const b = tokensAny[i - 1];
|
|
249
|
+
const content = String(a.content ?? "") + String(b.content ?? "");
|
|
250
|
+
fixedTokens.splice(i - 3, 4, {
|
|
251
|
+
type: "text",
|
|
252
|
+
content,
|
|
253
|
+
raw: content
|
|
254
|
+
});
|
|
255
|
+
}
|
|
226
256
|
i -= 3;
|
|
227
257
|
}
|
|
228
|
-
} else {
|
|
229
|
-
if (tokens[i - 1].type === "text" && tokens[i - 3].type === "text") {
|
|
230
|
-
const a = tokensAny[i - 3];
|
|
231
|
-
const b = tokensAny[i - 1];
|
|
232
|
-
const content = String(a.content ?? "") + String(b.content ?? "");
|
|
233
|
-
fixedTokens.splice(i - 3, 4, {
|
|
234
|
-
type: "text",
|
|
235
|
-
content,
|
|
236
|
-
raw: content
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
i -= 3;
|
|
240
258
|
}
|
|
241
259
|
}
|
|
242
260
|
}
|
|
@@ -244,23 +262,20 @@ function fixLinkToken4(tokens) {
|
|
|
244
262
|
}
|
|
245
263
|
|
|
246
264
|
//#endregion
|
|
247
|
-
//#region src/plugins/
|
|
248
|
-
function
|
|
249
|
-
md.core.ruler.after("inline", "
|
|
265
|
+
//#region src/plugins/fixListItem.ts
|
|
266
|
+
function applyFixListItem(md) {
|
|
267
|
+
md.core.ruler.after("inline", "fix_list_item_tokens", (state) => {
|
|
250
268
|
const toks = state.tokens ?? [];
|
|
251
269
|
for (let i = 0; i < toks.length; i++) {
|
|
252
270
|
const t = toks[i];
|
|
253
271
|
if (t && t.type === "inline" && Array.isArray(t.children)) try {
|
|
254
|
-
t.children =
|
|
272
|
+
t.children = fixListItem(t.children);
|
|
255
273
|
} catch (e) {
|
|
256
|
-
console.error("[
|
|
274
|
+
console.error("[applyFixListItem] failed to fix inline children", e);
|
|
257
275
|
}
|
|
258
276
|
}
|
|
259
277
|
});
|
|
260
278
|
}
|
|
261
|
-
|
|
262
|
-
//#endregion
|
|
263
|
-
//#region src/parser/inline-parsers/fixListItem.ts
|
|
264
279
|
function fixListItem(tokens) {
|
|
265
280
|
const last = tokens[tokens.length - 1];
|
|
266
281
|
const lastContent = String(last?.content ?? "");
|
|
@@ -269,23 +284,20 @@ function fixListItem(tokens) {
|
|
|
269
284
|
}
|
|
270
285
|
|
|
271
286
|
//#endregion
|
|
272
|
-
//#region src/plugins/
|
|
273
|
-
function
|
|
274
|
-
md.core.ruler.after("inline", "
|
|
287
|
+
//#region src/plugins/fixStrongTokens.ts
|
|
288
|
+
function applyFixStrongTokens(md) {
|
|
289
|
+
md.core.ruler.after("inline", "fix_strong_tokens", (state) => {
|
|
275
290
|
const toks = state.tokens ?? [];
|
|
276
291
|
for (let i = 0; i < toks.length; i++) {
|
|
277
292
|
const t = toks[i];
|
|
278
293
|
if (t && t.type === "inline" && Array.isArray(t.children)) try {
|
|
279
|
-
t.children =
|
|
294
|
+
t.children = fixStrongTokens(t.children);
|
|
280
295
|
} catch (e) {
|
|
281
|
-
console.error("[
|
|
296
|
+
console.error("[applyFixStrongTokens] failed to fix inline children", e);
|
|
282
297
|
}
|
|
283
298
|
}
|
|
284
299
|
});
|
|
285
300
|
}
|
|
286
|
-
|
|
287
|
-
//#endregion
|
|
288
|
-
//#region src/parser/inline-parsers/fixStrongTokens.ts
|
|
289
301
|
function fixStrongTokens(tokens) {
|
|
290
302
|
const fixedTokens = [...tokens];
|
|
291
303
|
if (tokens.length < 4) return fixedTokens;
|
|
@@ -337,23 +349,18 @@ function fixStrongTokens(tokens) {
|
|
|
337
349
|
}
|
|
338
350
|
|
|
339
351
|
//#endregion
|
|
340
|
-
//#region src/plugins/
|
|
341
|
-
function
|
|
342
|
-
md.core.ruler.after("
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
const
|
|
346
|
-
if (
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
console.error("[applyFixStrongTokens] failed to fix inline children", e);
|
|
350
|
-
}
|
|
352
|
+
//#region src/plugins/fixTableTokens.ts
|
|
353
|
+
function applyFixTableTokens(md) {
|
|
354
|
+
md.core.ruler.after("block", "fix_table_tokens", (state) => {
|
|
355
|
+
const s = state;
|
|
356
|
+
try {
|
|
357
|
+
const fixed = fixTableTokens(s.tokens ?? []);
|
|
358
|
+
if (Array.isArray(fixed)) s.tokens = fixed;
|
|
359
|
+
} catch (e) {
|
|
360
|
+
console.error("[applyFixTableTokens] failed to fix table tokens", e);
|
|
351
361
|
}
|
|
352
362
|
});
|
|
353
363
|
}
|
|
354
|
-
|
|
355
|
-
//#endregion
|
|
356
|
-
//#region src/parser/fixTableTokens.ts
|
|
357
364
|
function createStart() {
|
|
358
365
|
return [
|
|
359
366
|
{
|
|
@@ -486,20 +493,6 @@ function fixTableTokens(tokens) {
|
|
|
486
493
|
return fixedTokens;
|
|
487
494
|
}
|
|
488
495
|
|
|
489
|
-
//#endregion
|
|
490
|
-
//#region src/plugins/fixTableTokens.ts
|
|
491
|
-
function applyFixTableTokens(md) {
|
|
492
|
-
md.core.ruler.after("block", "fix_table_tokens", (state) => {
|
|
493
|
-
const s = state;
|
|
494
|
-
try {
|
|
495
|
-
const fixed = fixTableTokens(s.tokens ?? []);
|
|
496
|
-
if (Array.isArray(fixed)) s.tokens = fixed;
|
|
497
|
-
} catch (e) {
|
|
498
|
-
console.error("[applyFixTableTokens] failed to fix table tokens", e);
|
|
499
|
-
}
|
|
500
|
-
});
|
|
501
|
-
}
|
|
502
|
-
|
|
503
496
|
//#endregion
|
|
504
497
|
//#region src/findMatchingClose.ts
|
|
505
498
|
function findMatchingClose(src, startIdx, open, close) {
|
|
@@ -591,6 +584,7 @@ function isMathLike(s) {
|
|
|
591
584
|
const norm = s.replace(/\u0008/g, "\\b");
|
|
592
585
|
const stripped = norm.trim();
|
|
593
586
|
if (DATE_TIME_RE.test(stripped)) return false;
|
|
587
|
+
if (stripped.includes("**")) return false;
|
|
594
588
|
if (stripped.length > 2e3) return true;
|
|
595
589
|
if (/[./]\s*\D|\D\s*[./]/.test(s)) return false;
|
|
596
590
|
const texCmd = TEX_CMD_RE.test(norm);
|
|
@@ -611,6 +605,7 @@ const KATEX_COMMANDS = [
|
|
|
611
605
|
"cdots",
|
|
612
606
|
"quad",
|
|
613
607
|
"in",
|
|
608
|
+
"end",
|
|
614
609
|
"infty",
|
|
615
610
|
"perp",
|
|
616
611
|
"mid",
|
|
@@ -659,8 +654,7 @@ const KATEX_COMMANDS = [
|
|
|
659
654
|
"frac",
|
|
660
655
|
"text",
|
|
661
656
|
"left",
|
|
662
|
-
"right"
|
|
663
|
-
"times"
|
|
657
|
+
"right"
|
|
664
658
|
];
|
|
665
659
|
const ESCAPED_KATEX_COMMANDS = KATEX_COMMANDS.slice().sort((a, b) => b.length - a.length).map((c) => c.replace(/[.*+?^${}()|[\\]\\\]/g, "\\$&")).join("|");
|
|
666
660
|
const CONTROL_CHARS_CLASS = "[ \r\b\f\v]";
|
|
@@ -696,10 +690,12 @@ function normalizeStandaloneBackslashT(s, opts) {
|
|
|
696
690
|
const braceEscaped = useDefault ? [ESCAPED_TEX_BRACE_COMMANDS, ESCAPED_KATEX_COMMANDS].filter(Boolean).join("|") : [commands.map((c) => c.replace(/[.*+?^${}()|[\\]\\\]/g, "\\$&")).join("|"), ESCAPED_TEX_BRACE_COMMANDS].filter(Boolean).join("|");
|
|
697
691
|
let result = out;
|
|
698
692
|
if (braceEscaped) {
|
|
699
|
-
const braceCmdRe = new RegExp(`(^|[
|
|
693
|
+
const braceCmdRe = new RegExp(`(^|[^\\\\\\w])(${braceEscaped})\\s*\\{`, "g");
|
|
700
694
|
result = result.replace(braceCmdRe, (_m, p1, p2) => `${p1}\\${p2}{`);
|
|
701
695
|
}
|
|
702
696
|
result = result.replace(/span\{([^}]+)\}/, "span\\{$1\\}").replace(/\\operatorname\{span\}\{((?:[^{}]|\{[^}]*\})+)\}/, "\\operatorname{span}\\{$1\\}");
|
|
697
|
+
result = result.replace(/(^|[^\\])\\\r?\n/g, "$1\\\\\n");
|
|
698
|
+
result = result.replace(/(^|[^\\])\\$/g, "$1\\\\");
|
|
703
699
|
return result;
|
|
704
700
|
}
|
|
705
701
|
function applyMath(md, mathOpts) {
|
|
@@ -749,37 +745,47 @@ function applyMath(md, mathOpts) {
|
|
|
749
745
|
const endIdx = findMatchingClose_default(src, index + open.length, open, close);
|
|
750
746
|
if (endIdx === -1) {
|
|
751
747
|
const content$1 = src.slice(index + open.length);
|
|
752
|
-
if (
|
|
753
|
-
searchPos = index + open.length;
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
if (
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
748
|
+
if (content$1.includes(open)) {
|
|
749
|
+
searchPos = src.indexOf(open, index + open.length);
|
|
750
|
+
continue;
|
|
751
|
+
}
|
|
752
|
+
if (endIdx === -1) {
|
|
753
|
+
if (isMathLike(content$1)) {
|
|
754
|
+
searchPos = index + open.length;
|
|
755
|
+
foundAny = true;
|
|
756
|
+
if (!silent) {
|
|
757
|
+
s.pending = "";
|
|
758
|
+
const isStrongPrefix = countUnescapedStrong(preMathPos ? src.slice(preMathPos, searchPos) : src.slice(0, searchPos)) % 2 === 1;
|
|
759
|
+
if (preMathPos) pushText(src.slice(preMathPos, searchPos));
|
|
760
|
+
else {
|
|
761
|
+
let text = src.slice(0, searchPos);
|
|
762
|
+
if (text.endsWith(open)) text = text.slice(0, text.length - open.length);
|
|
763
|
+
pushText(text);
|
|
764
|
+
}
|
|
765
|
+
if (isStrongPrefix) {
|
|
766
|
+
const strongToken = s.push("strong_open", "", 0);
|
|
767
|
+
strongToken.markup = src.slice(0, index + 2);
|
|
768
|
+
const token = s.push("math_inline", "math", 0);
|
|
769
|
+
token.content = normalizeStandaloneBackslashT(content$1, mathOpts);
|
|
770
|
+
token.markup = open === "$$" ? "$$" : open === "\\(" ? "\\(\\)" : open === "$" ? "$" : "()";
|
|
771
|
+
token.raw = `${open}${content$1}${close}`;
|
|
772
|
+
token.loading = true;
|
|
773
|
+
strongToken.content = content$1;
|
|
774
|
+
s.push("strong_close", "", 0);
|
|
775
|
+
} else {
|
|
776
|
+
const token = s.push("math_inline", "math", 0);
|
|
777
|
+
token.content = normalizeStandaloneBackslashT(content$1, mathOpts);
|
|
778
|
+
token.markup = open === "$$" ? "$$" : open === "\\(" ? "\\(\\)" : open === "$" ? "$" : "()";
|
|
779
|
+
token.raw = `${open}${content$1}${close}`;
|
|
780
|
+
token.loading = true;
|
|
781
|
+
}
|
|
782
|
+
s.pos = src.length;
|
|
776
783
|
}
|
|
777
|
-
|
|
784
|
+
searchPos = src.length;
|
|
785
|
+
preMathPos = searchPos;
|
|
778
786
|
}
|
|
779
|
-
|
|
780
|
-
preMathPos = searchPos;
|
|
787
|
+
break;
|
|
781
788
|
}
|
|
782
|
-
break;
|
|
783
789
|
}
|
|
784
790
|
const content = src.slice(index + open.length, endIdx);
|
|
785
791
|
if (!isMathLike(content)) {
|