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.
@@ -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/parser/inline-parsers/fixLinkToken.ts
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--) if (tokens[i].type === "link_close") {
213
- if (tokens[i - 3]?.content?.endsWith("(")) {
214
- const nextToken = tokens[i + 1];
215
- if (nextToken?.type === "text") {
216
- if (tokens[i - 1].type === "text" && tokens[i - 3].type === "text") {
217
- const nextTokenContent = String(nextToken.content ?? "");
218
- const a = tokensAny[i - 3];
219
- const b = tokensAny[i - 1];
220
- const content = String(a.content ?? "") + String(b.content ?? "") + nextTokenContent;
221
- fixedTokens.splice(i - 3, 5, {
222
- type: "text",
223
- content,
224
- raw: content
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/fixLinkTokens.ts
248
- function applyFixLinkTokens(md) {
249
- md.core.ruler.after("inline", "fix_link_tokens", (state) => {
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 = fixLinkToken(t.children);
272
+ t.children = fixListItem(t.children);
255
273
  } catch (e) {
256
- console.error("[applyFixLinkTokens] failed to fix inline children", e);
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/fixListItem.ts
273
- function applyFixListItem(md) {
274
- md.core.ruler.after("inline", "fix_list_item_tokens", (state) => {
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 = fixListItem(t.children);
294
+ t.children = fixStrongTokens(t.children);
280
295
  } catch (e) {
281
- console.error("[applyFixListItem] failed to fix inline children", e);
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/fixStrongTokens.ts
341
- function applyFixStrongTokens(md) {
342
- md.core.ruler.after("inline", "fix_strong_tokens", (state) => {
343
- const toks = state.tokens ?? [];
344
- for (let i = 0; i < toks.length; i++) {
345
- const t = toks[i];
346
- if (t && t.type === "inline" && Array.isArray(t.children)) try {
347
- t.children = fixStrongTokens(t.children);
348
- } catch (e) {
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(`(^|[^\\\\])(${braceEscaped})\\s*\\{`, "g");
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 (isMathLike(content$1)) {
753
- searchPos = index + open.length;
754
- foundAny = true;
755
- if (!silent) {
756
- s.pending = "";
757
- const isStrongPrefix = countUnescapedStrong(preMathPos ? src.slice(preMathPos, searchPos) : src.slice(0, searchPos)) % 2 === 1;
758
- if (preMathPos) pushText(src.slice(preMathPos, searchPos));
759
- else pushText(src.slice(0, searchPos));
760
- if (isStrongPrefix) {
761
- const strongToken = s.push("strong_open", "", 0);
762
- strongToken.markup = src.slice(0, index + 2);
763
- const token = s.push("math_inline", "math", 0);
764
- token.content = normalizeStandaloneBackslashT(content$1, mathOpts);
765
- token.markup = open === "$$" ? "$$" : open === "\\(" ? "\\(\\)" : open === "$" ? "$" : "()";
766
- token.raw = `${open}${content$1}${close}`;
767
- token.loading = true;
768
- strongToken.content = content$1;
769
- s.push("strong_close", "", 0);
770
- } else {
771
- const token = s.push("math_inline", "math", 0);
772
- token.content = normalizeStandaloneBackslashT(content$1, mathOpts);
773
- token.markup = open === "$$" ? "$$" : open === "\\(" ? "\\(\\)" : open === "$" ? "$" : "()";
774
- token.raw = `${open}${content$1}${close}`;
775
- token.loading = true;
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
- s.pos = src.length;
784
+ searchPos = src.length;
785
+ preMathPos = searchPos;
778
786
  }
779
- searchPos = src.length;
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)) {