stream-markdown-parser 0.0.48 → 0.0.50

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 CHANGED
@@ -313,6 +313,12 @@ interface ParseOptions {
313
313
  preTransformTokens?: TransformTokensHook;
314
314
  postTransformTokens?: TransformTokensHook;
315
315
  requireClosingStrong?: boolean;
316
+ /**
317
+ * When true, indicates the input buffer is complete (end-of-stream).
318
+ * This disables "mid-state" streaming behavior (e.g. unclosed math/link/code
319
+ * tokens staying in a loading state) and keeps trailing markers as literal text.
320
+ */
321
+ final?: boolean;
316
322
  /**
317
323
  * Custom HTML-like tag names that should be emitted as custom nodes
318
324
  * instead of `html_inline` when encountered (e.g. ['thinking']).
@@ -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;EAaL;AAEZ;AAMA;AAOA;EAMiB,cAAW,CAAA,EAAA,SAEhB,MAAA,EAAA;AAIZ;;;UAxCiB,QAAA;;EDUA,GAAA,EAAA,MAAA;;;;ACVjB;AAaA;AAEA;AAMA;AAOA;AAMA;AAMiB,KA3BL,WAAA,GAAc,QAgCjB,GAhC4B,MA2BH,CAAA,MAAQ,EAAA,OAAA,CAAA;AAQzB,UAjCA,QAAA,SAAiB,QAmCtB,CAF0B;EAKrB,IAAA,EAAA,MAAA;EAiBA,OAAA,EAAA,MAAA;EAOA,MAAA,CAAA,EAAA,OAAA;AAYjB;AAYiB,UAhFA,WAAA,SAAoB,QAgFA,CAAA;EAK3B,IAAA,EAAA,SAAA;EACG,KAAA,EAAA,MAAA;EANgC,IAAA,EAAA,MAAA;EAAQ,QAAA,EA5EzC,UA4EyC,EAAA;AAUrD;AAKiB,UAxFA,aAAA,SAAsB,QAwFL,CAAQ;EAQzB,IAAA,EAAA,WAAU;EAOV,QAAA,EArGL,UAqGuB,EAAA;EAIlB,aAAA,CAAA,EAAA,OAAgB;AASjC;AASiB,UAvHA,UAAA,SAAmB,QAyHxB,CAF4B;EAKvB,IAAA,EAAA,QAAU;EAEjB,QAAA,EA5HE,UA4HF,EAAA;EACF,OAAA,CAAA,EAAA,MAAA;;AAHmC,UAtH1B,QAAA,SAAiB,QAsHS,CAAA;EAM1B,IAAA,EAAA,MAAA;EAKA,OAAA,EAAA,OAAc;EAOd,KAAA,CAAA,EAAA,MAAA;EAKA,KAAA,EAxIR,YAwIQ,EAAmB;;AAGtB,UAxIG,YAAA,SAAqB,QAwIxB,CAAA;EAH8B,IAAA,EAAA,WAAA;EAAQ,QAAA,EAnIxC,UAmIwC,EAAA;AAMpD;AAMiB,UA5IA,aAAA,SAAsB,QA4IQ,CAAA;EAK9B,IAAA,EAAA,YAAA;EAKA,QAAA,EAAA,MAAA;EAOA,IAAA,EAAA,MAAA;EAGP,SAAA,CAAA,EAAA,MAAA;EACE,OAAA,CAAA,EAAA,MAAA;EAJ8B,OAAA,CAAA,EAAA,OAAA;EAAQ,IAAA,CAAA,EAAA,OAAA;EAOjC,YAAA,CAAW,EAAA,MAAA;EAKX,WAAA,CAAA,EAAA,MAAa;EAKb,GAAA,EAAA,MAAA;AAKjB;AAKiB,UAvKA,aAAA,SAAsB,QAuKH,CAAA;EAKnB,IAAA,EAAA,YAAc;EAKd,KAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAgB,CAAA,EAAA,GAAA,IAErB;EAGK,GAAA,EAAA,MAAA;EAKA,OAAA,EAAA,MAAA;AAKjB;AAMiB,UA/LA,cAAA,SAAuB,QA+LO,CAAA;EAI9B,IAAA,EAAA,aAAe;EAKf,GAAA,CAAA,EAAA,MAAA;EAKA,OAAA,EAAA,MAAA;EAMA,QAAA,EA/ML,UA+MsB,EAAA;EAkBtB;AAEZ;;;EAGM,UAAA,CAAA,EAAA,OAAA;;AAEA,KAhOM,oBAAA,GAgON,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,GA9NA,MA8NA,CAAA,MAAA,EAAA,MAAA,GAAA,OAAA,CAAA,GA7NA,KA6NA,CAAA;EACA,IAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,OAAA;CACA,CAAA,GAAA,IAAA;;;;;;;AAOA,UA9NW,mBAAA,SAA4B,QA8NvC,CAAA;EACA;EACA,IAAA,EAAA,MAAA;EACA,GAAA,EAAA,MAAA;EACA,OAAA,EAAA,MAAA;EACA,KAAA,CAAA,EA9NI,oBA8NJ;EACA,QAAA,CAAA,EA9NO,UA8NP,EAAA;EACA,UAAA,CAAA,EAAA,OAAA;;AAEA,UA7NW,cAAA,SAAuB,QA6NlC,CAAA;EACA,IAAA,EAAA,aAAA;EACA,IAAA,EAAA,MAAA;;AAEA,UA5NW,QAAA,SAAiB,QA4N5B,CAAA;EACA,IAAA,EAAA,MAAA;EACA,IAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,IAAA;EACA,IAAA,EAAA,MAAA;EACA,QAAA,EA5NM,UA4NN,EAAA;;AAEA,UA3NW,SAAA,SAAkB,QA2N7B,CAAA;EACA,IAAA,EAAA,OAAA;EACA,GAAA,EAAA,MAAA;EACA,GAAA,EAAA,MAAA;EAAW,KAAA,EAAA,MAAA,GAAA,IAAA;AACjB;AAmCY,UA3PK,iBAAA,SAA0B,QA2PA,CAAA;EAE1B,IAAA,EAAA,gBAAY;AAgB7B;UAzQiB,gBAAA;;;IChGD,QAAA,EAAA,MAAiB;IACvB,IAAA,EAAA,MAAA;IAEI,OAAA,CAAA,EAAA,OAAA;EAEX,CAAA;;KDoGS,cAAA;;;AEhCZ,CAAA,GAAgB;EAEV,OAAA,CAAA,EAAA,SAAA;EACK,KAAA,EFoCA,QEpCA,EAAA;CACR;AAAU,UFqCI,cAAA,SAAuB,QErC3B,CAAA;EAkIG,IAAA,EAAA,YAAa;EAAS,QAAA,EF3F1B,UE2F0B,EAAA;;AAA0C,UFxF/D,SAAA,SAAkB,QEwF6C,CAAA;EAAU,IAAA,EAAA,OAAA;UFtFhF;QACF;;AG1JS,UH6JA,YAAA,SAAqB,QG7JV,CAAA;EAqBZ,IAAA,EAAA,WAAA;SH0IP;;UAGQ,aAAA,SAAsB;EI3KvB,IAAA,EAAA,YAAA;;YJ8KJ;;AK1IZ;UL8IiB,kBAAA,SAA2B;;SAEnC;AMjLT;UNoLiB,kBAAA,SAA2B;;QAEpC;EOzLK,UAAA,EP0LC,UOxKb,EAAA;AAED;AA6BgB,UP4IC,YAAA,SAAqB,QO5IZ,CAAA;;;YP+Id;AQ/KZ;AAyKgB,URSC,qBAAA,SAA8B,QQTiB,CAAA;EA2EhD,IAAA,EAAA,oBAAc;;;UR7Db,kBAAA,SAA2B;ESnL5B,IAAA,EAAA,iBAAA;EAIA,EAAA,EAAA,MAAA;AAwBhB;AACW,UT2JM,cAAA,SAAuB,QS3J7B,CAAA;EACU,IAAA,EAAA,YAAA;EAAX,IAAA,EAAA,MAAA;EAK2B,KAAA,EAAA,MAAA;EAPO,QAAA,ETgKhC,UShKgC,EAAA;;AAU5B,UTyJC,gBAAA,SAAyB,QSzJ0D,CAAA;;;UT4J1F;YACE;;UAGK,UAAA,SAAmB;;YAExB;;UAGK,YAAA,SAAqB;;YAE1B;;UAGK,iBAAA,SAA0B;;YAE/B;;UAGK,aAAA,SAAsB;;YAE3B;;UAGK,UAAA,SAAmB;;YAExB;;UAGK,aAAA,SAAsB;;YAE3B;;UAGK,eAAA,SAAwB;;YAE7B;;UAGK,YAAA,SAAqB;;;;UAKrB,iBAAA,SAA0B;;;;UAK1B,SAAA,SAAkB;;;;;UAMlB,aAAA,SAAsB;;;UAItB,cAAA,SAAuB;;;;UAKvB,aAAA,SAAsB;;;;UAKtB,aAAA,SAAsB;;;;UAMtB,iBAAA;;;;;;;;;;;;;aAaJ;;;;KAKD,aAAA,IAAiB;;;KAA+C;KAEhE,UAAA,GACN,WACA,cACA,gBACA,WACA,eACA,gBACA,iBACA,WACA,YACA,oBACA,iBACA,YACA,eACA,gBACA,aACA,eACA,oBACA,gBACA,aACA,gBACA,kBACA,eACA,oBACA,YACA,qBACA,qBACA,eACA,wBACA,iBACA,mBACA,gBACA,iBACA,gBACA,gBACA,gBACA,iBACA,sBACA;UACW,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmCL,mBAAA,YAA+B,oBAAoB;UAE9C,YAAA;uBACM;wBACC;;;;;;;;;;;KAcZ,sBAAA,WAAiC,iBAAiB;;;iBCzW9C,iBAAA,SACN,2CAEI;EFhCG,oBAAe,CAAA,EAAA,OACV;;IEiCnB;;;AFlCc,iBGsGD,wBAAA,CHtG8B,QAAA,EAAA,MAAA,EAAA,EAAA,EGwGxC,YHxGwC,EAAA,OAAA,CAAA,EGyGnC,YHzGmC,CAAA,EG0G3C,UH1G2C,EAAA;iBG4O9B,aAAA,SAAsB,2BAA2B,eAAe;;;;;;AH5OhF;;;;ACVA;AAaA;AAEiB,UGRA,WAAA,CHQiB;EAMjB;EAOA,QAAA,CAAA,EAAA,SAAc,MAAA,EAEnB;EAIK;EAMA,iBAAS,CAAA,EAAA,OAKjB;EAGQ;AAKjB;AAiBA;AAOA;AAYA;AAYA;;;;;AAUA;EAKiB,gBAAS,CAAA,EAAA,OAKd;AAGZ;AAOiB,iBGvGD,qBAAA,CHuGmC,IAAA,EGvGP,WHuGO,GAAA,SAAA,CAAA,EAAA,IAAA;;;iBIrInC,iBAAA;;;iBCoCA,eAAA,QAAuB,gBAAgB;;;iBCjCvC,eAAA,KAAoB;;;cCHvB;cAoBA;iBA6BG,UAAA;;;cChCH;iBAyKG,6BAAA,mBAAgD;iBA2EhD,SAAA,KAAc,yBAAuB;;;ATzPpC,iBUSD,sBAAA,CVTwB,MAAM,EAAA,OAAA,CAAA,EAAA,IAAA;iBUa9B,8BAAA,CAAA;AT8BC,USNA,kBAAA,SAA2B,cTMG,CAAA;EAiB9B,MAAA,CAAA,EStBN,KTsBM,CAAA,OAAc,CAAA;EAOd,KAAA,CAAA,ES5BP,KT4BO,CAAA,CAAA,EAAe,ES5BX,UTgCT,EAAA,GAAA,IAAA,CAAA;EAQA;AAYZ;;;EAA6C,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,MAAA,CAAA,GS/CR,MT+CQ,CAAA,MAAA,EAAA,MAAA,CAAA;;AAU5B,iBStDD,WAAA,CTsDwB,KAAQ,CAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EStD6B,kBTsD7B,CAAA,EStDoD,UTsDpD"}
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
@@ -8498,6 +8498,7 @@ function applyMath(md, mathOpts) {
8498
8498
  const mathInline = (state, silent) => {
8499
8499
  const s = state;
8500
8500
  const strict = !!mathOpts?.strictDelimiters;
8501
+ const allowLoading = !s?.env?.__markstreamFinal;
8501
8502
  if (/^\*[^*]+/.test(s.src)) return false;
8502
8503
  const delimiters = [["$", "$"], ["\\(", "\\)"]];
8503
8504
  let searchPos = 0;
@@ -8505,6 +8506,9 @@ function applyMath(md, mathOpts) {
8505
8506
  for (const [open, close] of delimiters) {
8506
8507
  const src = s.src;
8507
8508
  let foundAny = false;
8509
+ let lastIndex = -1;
8510
+ let lastSearchPos = -1;
8511
+ let stallCount = 0;
8508
8512
  const pushText = (text$1) => {
8509
8513
  if (text$1 === "undefined" || text$1 == null) text$1 = "";
8510
8514
  if (text$1 === "\\") {
@@ -8530,6 +8534,17 @@ function applyMath(md, mathOpts) {
8530
8534
  if (searchPos >= src.length) break;
8531
8535
  const index = src.indexOf(open, searchPos);
8532
8536
  if (index === -1) break;
8537
+ if (index === lastIndex && searchPos === lastSearchPos) {
8538
+ stallCount++;
8539
+ if (stallCount > 2) {
8540
+ searchPos = index + Math.max(1, open.length);
8541
+ continue;
8542
+ }
8543
+ } else {
8544
+ stallCount = 0;
8545
+ lastIndex = index;
8546
+ lastSearchPos = searchPos;
8547
+ }
8533
8548
  if (index > 0) {
8534
8549
  let i = index - 1;
8535
8550
  while (i >= 0 && src[i] === " ") i--;
@@ -8543,7 +8558,7 @@ function applyMath(md, mathOpts) {
8543
8558
  continue;
8544
8559
  }
8545
8560
  if (endIdx === -1) {
8546
- if (!strict && isMathLike(content$1) && !content$1.includes("`")) {
8561
+ if (allowLoading && !strict && isMathLike(content$1) && !content$1.includes("`")) {
8547
8562
  searchPos = index + open.length;
8548
8563
  foundAny = true;
8549
8564
  if (!silent) {
@@ -8584,7 +8599,8 @@ function applyMath(md, mathOpts) {
8584
8599
  }
8585
8600
  const content = src.slice(index + open.length, endIdx);
8586
8601
  const hasBacktick = content.includes("`");
8587
- if (strict ? hasBacktick : hasBacktick || !(open === "$") && !isMathLike(content)) {
8602
+ const isEmpty = !content || !content.trim();
8603
+ if (strict ? hasBacktick || isEmpty : hasBacktick || isEmpty || !(open === "$") && !isMathLike(content)) {
8588
8604
  searchPos = endIdx + close.length;
8589
8605
  const text$1 = src.slice(s.pos, searchPos);
8590
8606
  if (!s.pending) pushText(text$1);
@@ -8619,14 +8635,11 @@ function applyMath(md, mathOpts) {
8619
8635
  token.markup = open === "$$" ? "$$" : open === "\\(" ? "\\(\\)" : open === "$" ? "$" : "()";
8620
8636
  token.raw = `${open}${content}${close}`;
8621
8637
  token.loading = false;
8622
- const raw = src.slice(endIdx + close.length);
8623
- const isBeforeClose = raw.startsWith(strongMarker);
8638
+ const isBeforeClose = src.slice(endIdx + close.length).startsWith(strongMarker);
8624
8639
  if (isBeforeClose) s.push("strong_close", "", 0);
8625
- if (raw) {
8626
- s.pos = endIdx + close.length;
8627
- searchPos = s.pos;
8628
- preMathPos = searchPos;
8629
- }
8640
+ s.pos = endIdx + close.length;
8641
+ searchPos = s.pos;
8642
+ preMathPos = searchPos;
8630
8643
  if (!isBeforeClose) s.push("strong_close", "", 0);
8631
8644
  continue;
8632
8645
  } else {
@@ -8653,6 +8666,7 @@ function applyMath(md, mathOpts) {
8653
8666
  };
8654
8667
  const mathBlock = (state, startLine, endLine, silent) => {
8655
8668
  const s = state;
8669
+ const allowLoading = !s?.env?.__markstreamFinal;
8656
8670
  const strict = mathOpts?.strictDelimiters;
8657
8671
  const delimiters = strict ? [["\\[", "\\]"], ["$$", "$$"]] : [
8658
8672
  ["\\[", "\\]"],
@@ -8760,7 +8774,7 @@ function applyMath(md, mathOpts) {
8760
8774
  content += (content ? "\n" : "") + currentLine;
8761
8775
  }
8762
8776
  }
8763
- if (strict && !found) return false;
8777
+ if ((!allowLoading || strict) && !found) return false;
8764
8778
  if (!(openDelim === "[" ? isPlainBracketMathLike(content) : isMathLike(content))) return false;
8765
8779
  const token = s.push("math_block", "math", 0);
8766
8780
  token.content = normalizeStandaloneBackslashT(content);
@@ -11045,14 +11059,73 @@ function parseParagraph(tokens, index, options) {
11045
11059
  //#endregion
11046
11060
  //#region src/parser/index.ts
11047
11061
  function stripDanglingHtmlLikeTail(markdown) {
11062
+ const isWs = (ch) => ch === " " || ch === " " || ch === "\n" || ch === "\r";
11063
+ const isLikelyHtmlTagPrefix = (tail$1) => {
11064
+ if (!tail$1 || tail$1[0] !== "<") return false;
11065
+ if (tail$1.includes(">")) return false;
11066
+ let i = 1;
11067
+ if (i < tail$1.length && isWs(tail$1[i])) return false;
11068
+ if (tail$1[i] === "/") {
11069
+ i++;
11070
+ if (i < tail$1.length && isWs(tail$1[i])) return false;
11071
+ }
11072
+ const isAlpha = (ch) => {
11073
+ const c = ch.charCodeAt(0);
11074
+ return c >= 65 && c <= 90 || c >= 97 && c <= 122;
11075
+ };
11076
+ const isDigit = (ch) => {
11077
+ const c = ch.charCodeAt(0);
11078
+ return c >= 48 && c <= 57;
11079
+ };
11080
+ const isNameStart = (ch) => ch === "!" || isAlpha(ch);
11081
+ const isNameChar = (ch) => isAlpha(ch) || isDigit(ch) || ch === ":" || ch === "-";
11082
+ const isAttrStart = (ch) => isAlpha(ch) || isDigit(ch) || ch === "_" || ch === "." || ch === ":" || ch === "-";
11083
+ const isAttrChar = isAttrStart;
11084
+ if (i >= tail$1.length || !isNameStart(tail$1[i])) return false;
11085
+ i++;
11086
+ while (i < tail$1.length && isNameChar(tail$1[i])) i++;
11087
+ while (i < tail$1.length) {
11088
+ while (i < tail$1.length && isWs(tail$1[i])) i++;
11089
+ if (i >= tail$1.length) return true;
11090
+ if (tail$1[i] === "/") {
11091
+ i++;
11092
+ while (i < tail$1.length && isWs(tail$1[i])) i++;
11093
+ return i >= tail$1.length;
11094
+ }
11095
+ if (!isAttrStart(tail$1[i])) return false;
11096
+ i++;
11097
+ while (i < tail$1.length && isAttrChar(tail$1[i])) i++;
11098
+ while (i < tail$1.length && isWs(tail$1[i])) i++;
11099
+ if (i < tail$1.length && tail$1[i] === "=") {
11100
+ i++;
11101
+ while (i < tail$1.length && isWs(tail$1[i])) i++;
11102
+ if (i >= tail$1.length) return true;
11103
+ const quote = tail$1[i];
11104
+ if (quote === "\"" || quote === "'") {
11105
+ i++;
11106
+ while (i < tail$1.length && tail$1[i] !== quote) i++;
11107
+ if (i >= tail$1.length) return true;
11108
+ i++;
11109
+ } else {
11110
+ while (i < tail$1.length) {
11111
+ const ch = tail$1[i];
11112
+ if (isWs(ch) || ch === "<" || ch === ">" || ch === "\"" || ch === "'" || ch === "`") break;
11113
+ i++;
11114
+ }
11115
+ if (i >= tail$1.length) return true;
11116
+ }
11117
+ }
11118
+ }
11119
+ return true;
11120
+ };
11048
11121
  const isInsideFencedCodeBlock = (src, pos) => {
11049
11122
  let inFence = false;
11050
11123
  let fenceChar = "";
11051
11124
  let fenceLen = 0;
11052
- const isWs = (ch) => ch === " " || ch === " ";
11125
+ const isIndentWs = (ch) => ch === " " || ch === " ";
11053
11126
  const parseFenceMarker = (line) => {
11054
11127
  let i = 0;
11055
- while (i < line.length && isWs(line[i])) i++;
11128
+ while (i < line.length && isIndentWs(line[i])) i++;
11056
11129
  const ch = line[i];
11057
11130
  if (ch !== "`" && ch !== "~") return null;
11058
11131
  let j = i;
@@ -11067,12 +11140,12 @@ function stripDanglingHtmlLikeTail(markdown) {
11067
11140
  };
11068
11141
  const stripBlockquotePrefix = (line) => {
11069
11142
  let i = 0;
11070
- while (i < line.length && isWs(line[i])) i++;
11143
+ while (i < line.length && isIndentWs(line[i])) i++;
11071
11144
  let saw = false;
11072
11145
  while (i < line.length && line[i] === ">") {
11073
11146
  saw = true;
11074
11147
  i++;
11075
- while (i < line.length && isWs(line[i])) i++;
11148
+ while (i < line.length && isIndentWs(line[i])) i++;
11076
11149
  }
11077
11150
  return saw ? line.slice(i) : null;
11078
11151
  };
@@ -11116,25 +11189,35 @@ function stripDanglingHtmlLikeTail(markdown) {
11116
11189
  const lastLt = s.lastIndexOf("<");
11117
11190
  if (lastLt === -1) return s;
11118
11191
  if (isInsideFencedCodeBlock(s, lastLt)) return s;
11192
+ if (lastLt > 0) {
11193
+ const prev = s[lastLt - 1];
11194
+ const prevIsWs = prev === " " || prev === " " || prev === "\n" || prev === "\r";
11195
+ const prev2 = s[lastLt - 2];
11196
+ if (!prevIsWs && !((prev === "n" || prev === "r") && prev2 === "\\")) return s;
11197
+ }
11119
11198
  const tail = s.slice(lastLt);
11120
11199
  if (tail.includes(">")) return s;
11121
- if (!/^<\s*(?:\/\s*)?[A-Z!][\s\S]*$/i.test(tail)) return s;
11200
+ if (tail.length > 1 && (tail[1] === " " || tail[1] === " " || tail[1] === "\n" || tail[1] === "\r")) return s;
11201
+ if (!isLikelyHtmlTagPrefix(tail)) return s;
11122
11202
  return s.slice(0, lastLt);
11123
11203
  }
11124
11204
  function parseMarkdownToStructure(markdown, md, options = {}) {
11205
+ const isFinal = !!options.final;
11125
11206
  let safeMarkdown = (markdown ?? "").toString().replace(/([^\\])\r(ight|ho)/g, "$1\\r$2").replace(/([^\\])\n(abla|eq|ot|exists)/g, "$1\\n$2");
11126
- if (safeMarkdown.endsWith("- *")) safeMarkdown = safeMarkdown.replace(/- \*$/, "- \\*");
11127
- if (/(?:^|\n)\s*-\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(?:^|\n)\s*-\s*$/, (m) => {
11128
- return m.startsWith("\n") ? "\n" : "";
11129
- });
11130
- else if (/(?:^|\n)\s*--\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(?:^|\n)\s*--\s*$/, (m) => {
11131
- return m.startsWith("\n") ? "\n" : "";
11132
- });
11133
- else if (/(?:^|\n)\s*>\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(?:^|\n)\s*>\s*$/, (m) => {
11134
- return m.startsWith("\n") ? "\n" : "";
11135
- });
11136
- else if (/\n\s*[*+]\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/\n\s*[*+]\s*$/, "\n");
11137
- else if (/\n[[(]\n*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(\n\[|\n\()+\n*$/g, "\n");
11207
+ if (!isFinal) {
11208
+ if (safeMarkdown.endsWith("- *")) safeMarkdown = safeMarkdown.replace(/- \*$/, "- \\*");
11209
+ if (/(?:^|\n)\s*-\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(?:^|\n)\s*-\s*$/, (m) => {
11210
+ return m.startsWith("\n") ? "\n" : "";
11211
+ });
11212
+ else if (/(?:^|\n)\s*--\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(?:^|\n)\s*--\s*$/, (m) => {
11213
+ return m.startsWith("\n") ? "\n" : "";
11214
+ });
11215
+ else if (/(?:^|\n)\s*>\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(?:^|\n)\s*>\s*$/, (m) => {
11216
+ return m.startsWith("\n") ? "\n" : "";
11217
+ });
11218
+ else if (/\n\s*[*+]\s*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/\n\s*[*+]\s*$/, "\n");
11219
+ else if (/\n[[(]\n*$/.test(safeMarkdown)) safeMarkdown = safeMarkdown.replace(/(\n\[|\n\()+\n*$/g, "\n");
11220
+ }
11138
11221
  if (options.customHtmlTags?.length) {
11139
11222
  const tags = options.customHtmlTags.map((t) => String(t ?? "").trim()).filter(Boolean).map((t) => {
11140
11223
  return (t.match(/^[<\s/]*([A-Z][\w-]*)/i)?.[1] ?? "").toLowerCase();
@@ -11144,8 +11227,8 @@ function parseMarkdownToStructure(markdown, md, options = {}) {
11144
11227
  safeMarkdown = safeMarkdown.replace(re, "$1$2$2");
11145
11228
  }
11146
11229
  }
11147
- safeMarkdown = stripDanglingHtmlLikeTail(safeMarkdown);
11148
- const tokens = md.parse(safeMarkdown, {});
11230
+ if (!isFinal) safeMarkdown = stripDanglingHtmlLikeTail(safeMarkdown);
11231
+ const tokens = md.parse(safeMarkdown, { __markstreamFinal: isFinal });
11149
11232
  if (!tokens || !Array.isArray(tokens)) return [];
11150
11233
  const pre = options.preTransformTokens;
11151
11234
  const post = options.postTransformTokens;
@@ -11290,7 +11373,9 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
11290
11373
  md.use(footnote_plugin);
11291
11374
  md.core.ruler.after("block", "mark_fence_closed", (state) => {
11292
11375
  const s = state;
11293
- const lines = s.src.split(/\r?\n/);
11376
+ const src = s.src;
11377
+ const envFinal = !!s.env?.__markstreamFinal;
11378
+ const lines = src.split(/\r?\n/);
11294
11379
  for (const token of s.tokens) {
11295
11380
  if (token.type !== "fence" || !token.map || !token.markup) continue;
11296
11381
  const openLine = token.map[0];
@@ -11305,7 +11390,7 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
11305
11390
  while (i + count < line.length && line[i + count] === marker) count++;
11306
11391
  let j = i + count;
11307
11392
  while (j < line.length && (line[j] === " " || line[j] === " ")) j++;
11308
- const closed = endLine > openLine + 1 && count >= minLen && j === line.length;
11393
+ const closed = envFinal ? true : endLine > openLine + 1 && count >= minLen && j === line.length;
11309
11394
  const tokenShape = token;
11310
11395
  tokenShape.meta = tokenShape.meta ?? {};
11311
11396
  tokenShape.meta.unclosed = !closed;