stream-markdown-parser 0.0.74 → 0.0.76

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":";;;UAaiB,cAAA,SAAuB;sBAClB;;EADL,gBAAA,CAAe,EAAA,OAAA;;;;ECXf,CAAA;EAaL;AAEZ;AAMA;;EAKY,cAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EALyB;;AAQrC;AAMA;EAMiB,0BAKR,CAAA,EAAA,OAAA;AAGT;;;UAjDiB,QAAA;;EDWA,GAAA,EAAA,MAAA;;;;ACXjB;AAaA;AAEA;AAMA;;;AAAqC,KARzB,WAAA,GAAc,QAQW,GARA,MAQA,CAAA,MAAA,EAAA,OAAA,CAAA;AAAQ,UAN5B,QAAA,SAAiB,QAMW,CAAA;EAQ5B,IAAA,EAAA,MAAA;EAMA,OAAA,EAAA,MAAW;EAMX,MAAA,CAAA,EAAA,OAAS;AAQ1B;AAKiB,UAjCA,WAAA,SAAoB,QAiCU,CAAA;EAiB9B,IAAA,EAAA,SAAA;EAOA,KAAA,EAAA,MAAA;EAYL,IAAA,EAAA,MAAA;EAYK,KAAA,CAAA,EA7EP,MA6EO,CAAA,MAAA,EAAoB,MAAA,GAAA,OAAA,CAAA;EAK3B,QAAA,EAjFE,UAiFF,EAAA;;AALmC,UAzE5B,aAAA,SAAsB,QAyEM,CAAA;EAAQ,IAAA,EAAA,WAAA;EAUpC,QAAA,EAjFL,UAiFoB,EAAA;EAKf,aAAS,CAAA,EAAA,OAMd;AAGZ;AAOiB,UAlGA,UAAA,SAAmB,QAkGO,CAAQ;EAIlC,IAAA,EAAA,QAAA;EASL,QAAA,EA7GA,UA6Gc,EAAA;EAST,OAAA,CAAA,EAAA,MAAA;AAKjB;AAEU,UAzHO,QAAA,SAAiB,QAyHxB,CAAA;EACF,IAAA,EAAA,MAAA;EAH2B,OAAA,EAAA,OAAA;EAAQ,KAAA,CAAA,EAAA,MAAA;EAM1B,KAAA,EAxHR,YAwHqB,EAAA;AAK9B;AAOiB,UAjIA,YAAA,SAAqB,QAmI7B,CAAA;EAGQ,IAAA,EAAA,WAAA;EAET,QAAA,EAtII,UAsIJ,EAAA;;AAFoC,UAjI3B,aAAA,SAAsB,QAiIK,CAAA;EAAQ,IAAA,EAAA,YAAA;EAMnC,QAAA,EAAA,MAAa;EAMb,IAAA,EAAA,MAAA;EAKA,SAAA,CAAA,EAAA,MAAA;EAKA,OAAA,CAAA,EAAA,MAAA;EAOA,OAAA,CAAA,EAAA,OAAA;EAKP,IAAA,CAAA,EAAA,OAAA;EACE,YAAA,CAAA,EAAA,MAAA;EAN8B,WAAA,CAAA,EAAA,MAAA;EAAQ,GAAA,EAAA,MAAA;AASlD;AAKiB,UA3JA,aAAA,SAAsB,QA2JD,CAAA;EAKrB,IAAA,EAAA,YAAA;EAKA,KAAA,CAAA,EAAA,CAAA,MAAA,EAAc,MAAA,CAAA,EAAA,GAEnB,IAAA;EAGK,GAAA,EAAA,MAAA;EAKA,OAAA,EAAA,MAAA;AAKjB;AAKiB,UAlLA,cAAA,SAAuB,QAkLM,CAAA;EAK7B,IAAA,EAAA,aAAA;EAKA,GAAA,CAAA,EAAA,MAAU;EAMV,OAAA,EAAA,MAAA;EAIA,QAAA,EAlML,UAkMoB,EAAA;EAMf;AAMjB;AAMA;AAkBA;EAEY,UAAA,CAAA,EAAU,OAAA;;AAEhB,KAlOM,oBAAA,GAkON,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,GAhOA,MAgOA,CAAA,MAAA,EAAA,MAAA,GAAA,OAAA,CAAA,GA/NA,KA+NA,CAAA;EACA,IAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,OAAA;CACA,CAAA,GAAA,IAAA;;;;;;;AAOA,UAhOW,mBAAA,SAA4B,QAgOvC,CAAA;EACA;EACA,IAAA,EAAA,MAAA;EACA,GAAA,EAAA,MAAA;EACA,OAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAhOI,oBAgOJ;EACA,QAAA,CAAA,EAhOO,UAgOP,EAAA;EACA,UAAA,CAAA,EAAA,OAAA;;AAEA,UA/NW,cAAA,SAAuB,QA+NlC,CAAA;EACA,IAAA,EAAA,aAAA;EACA,IAAA,EAAA,MAAA;;AAEA,UA9NW,QAAA,SAAiB,QA8N5B,CAAA;EACA,IAAA,EAAA,MAAA;EACA,IAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,IAAA;EACA,IAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA;EACA,QAAA,EA9NM,UA8NN,EAAA;;AAEA,UA7NW,SAAA,SAAkB,QA6N7B,CAAA;EACA,IAAA,EAAA,OAAA;EACA,GAAA,EAAA,MAAA;EACA,GAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,IAAA;;AACW,UA3NA,iBAAA,SAA0B,QA2N1B,CAAA;EACA,IAAA,EAAA,gBAAgB;AAmCjC;AAEiB,UA7PA,gBAAA,CA8PM;EA6BX,IAAA,EAAA;;;;ICpQI,OAAA,CAAA,EAAA,OAAiB;EACvB,CAAA;;AAGE,KDlBA,cAAA,GCkBA;EACT,OAAA,EAAA,MAAA;EAAU,KAAA,CAAA,EAAA,SAAA;;;SDZF;AEkoCX,CAAA;AAEM,UFloCW,cAAA,SAAuB,QEkoClC,CAAA;EACK,IAAA,EAAA,YAAA;EACR,QAAA,EFloCS,UEkoCT,EAAA;;AAwMa,UFv0CC,SAAA,SAAkB,QEu0CN,CAAA;EAAS,IAAA,EAAA,OAAA;EAA2B,MAAA,EFr0CvD,YEq0CuD;EAAe,IAAA,EFp0CxE,YEo0CwE,EAAA;;UFj0C/D,YAAA,SAAqB;;SAE7B;AGjKT;AAqBgB,UH+IC,aAAA,SAAsB,QG/IK,CAAA;;;YHkJhC;EIhLI,KAAA,CAAA,EAAA,MAAA,GAAA,OAAiB,GAAA,QAAA;;UJoLhB,kBAAA,SAA2B;;EKhJ5B,KAAA,ELkJP,kBKlJsB,EAAA;;ULqJd,kBAAA,SAA2B;;EMxD5B,IAAA,EN0DR,UM1DQ,EAAe;cN2DjB;;UAGG,YAAA,SAAqB;EO/LzB,IAAA,EAAA,UAAA;EAoBA,EAAA,EAAA,MAAA;EA6BG,QAAA,EPiJJ,UOjJc,EAAA;;UPoJT,qBAAA,SAA8B;;EQpLlC,EAAA,EAAA,MAAA;AAyKb;AA0MgB,UR1LC,kBAAA,SAA2B,QQ0LS,CAAA;;;;AC/WrC,UT0LC,cAAA,SAAuB,QS1LF,CAAA;EAItB,IAAA,EAAA,YAAA;EAwBC,IAAA,EAAA,MAAA;EACN,KAAA,EAAA,MAAA;EACU,QAAA,ETgKT,UShKS,EAAA;;AAKgB,UT8JpB,gBAAA,SAAyB,QS9JL,CAAA;EAPO,IAAA,EAAA,eAAA;EAAc,IAAA,EAAA,MAAA;EAU1C;;UTgKN;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;;;;;UAMvB,aAAA,SAAsB;;;;;UAMtB,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;;;;;;;;;;;;;;;;;;;;;;;;;KA4BZ,sBAAA,WAAiC,iBAAiB;;;iBCpQ9C,iBAAA,SACN,2CAEI,yBACF,eACT;;;iBCsnCa,wBAAA,uBAEV,wBACK,eACR;iBAwMa,aAAA,SAAsB,2BAA2B,eAAe;;;;;;AH59ChF;;;;ACXA;AAaA;AAEiB,UGRA,WAAA,CHQiB;EAMjB;EAIP,QAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EACE;EALyB,iBAAA,CAAA,EAAA,OAAA;EAAQ;AAQ7C;AAMA;AAMA;AAQA;AAKA;AAiBA;AAOA;AAYA;AAYA;;EAMa,gBAAA,CAAA,EAAA,OAAA;;AANwC,iBG1ErC,qBAAA,CH0EqC,IAAA,EG1ET,WH0ES,GAAA,SAAA,CAAA,EAAA,IAAA;;;iBIxGrC,iBAAA;;;iBCoCA,eAAA,QAAuB,gBAAgB;;;iBC6FvC,eAAA,KAAoB;;;cCjIvB;cAoBA;iBA6BG,UAAA;;;cChCH;iBAyKG,6BAAA,mBAAgD;iBA0MhD,SAAA,KAAc,yBAAuB;;;ATvXpC,iBUQD,sBAAA,CVRwB,MAAM,EAAA,OAAA,CAAA,EAAA,IAAA;iBUY9B,8BAAA,CAAA;ATMC,USkBA,kBAAA,SAA2B,cTlBG,CAAA;EAM9B,MAAA,CAAA,ESaN,KTbiB,CAAA,OAAA,CAAA;EAMX,KAAA,CAAA,ESQP,KTRgB,CAAA,CAAA,EAAA,ESQL,UTHZ,EAAA,GAAA,IALyB,CAAA;EAQjB;AAKjB;AAiBA;AAOA;EAYY,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAoB,MAAA,CAAA,GSpCK,MTsC/B,CAAA,MACA,EAAK,MAAA,CAAA;AASX;AAKU,iBSlDM,WAAA,CTkDN,KAAA,CAAA,EAAA,MAAA,EAAA,OAAA,CAAA,ESlDmE,kBTkDnE,CAAA,ESlD0F,UTkD1F"}
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
@@ -9497,7 +9497,93 @@ const OPEN_TAG_RE = /<([A-Z][\w-]*)(?=[\s/>]|$)/gi;
9497
9497
  const CLOSE_TAG_RE = /<\/\s*([A-Z][\w-]*)(?=[\s/>]|$)/gi;
9498
9498
  const TAG_NAME_AT_START_RE = /^<\s*(?:\/\s*)?([A-Z][\w-]*)/i;
9499
9499
  const STRICT_OPEN_TAG_NAME_AT_START_RE = /^<\s*([A-Z][\w:-]*)(?=[\s/>]|$)/i;
9500
- function findTagCloseIndexOutsideQuotes$1(html) {
9500
+ function getHtmlInlineTagName(content) {
9501
+ return (content.match(TAG_NAME_AT_START_RE)?.[1] ?? "").toLowerCase();
9502
+ }
9503
+ function isHtmlInlineClosingTag(content) {
9504
+ return /^\s*<\s*\//.test(content);
9505
+ }
9506
+ function isSelfClosingHtmlInline(content, tag) {
9507
+ return VOID_TAGS$2.has(tag) || /\/\s*>\s*$/.test(content);
9508
+ }
9509
+ function escapeRegex$1(value) {
9510
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
9511
+ }
9512
+ function findMatchingCloseChildIndex(children, tag) {
9513
+ let depth = 0;
9514
+ for (let index = 0; index < children.length; index++) {
9515
+ const child = children[index];
9516
+ if (!child || child.type !== "html_inline") continue;
9517
+ const content = String(child.content ?? "");
9518
+ const childTag = getHtmlInlineTagName(content);
9519
+ if (childTag !== tag) continue;
9520
+ if (isHtmlInlineClosingTag(content)) {
9521
+ if (depth === 0) return index;
9522
+ depth--;
9523
+ continue;
9524
+ }
9525
+ if (!isSelfClosingHtmlInline(content, childTag)) depth++;
9526
+ }
9527
+ return -1;
9528
+ }
9529
+ function getTrailingOpenDepth(children, tag) {
9530
+ let depth = 0;
9531
+ for (const child of children) {
9532
+ if (!child || child.type !== "html_inline") continue;
9533
+ const content = String(child.content ?? "");
9534
+ const childTag = getHtmlInlineTagName(content);
9535
+ if (childTag !== tag) continue;
9536
+ if (isHtmlInlineClosingTag(content)) {
9537
+ if (depth > 0) depth--;
9538
+ continue;
9539
+ }
9540
+ if (!isSelfClosingHtmlInline(content, childTag)) depth++;
9541
+ }
9542
+ return depth;
9543
+ }
9544
+ function findMatchingCloseRangeInHtml(content, tag, startIndex = 0) {
9545
+ const tokenRe = new RegExp(String.raw`<\s*(\/?)\s*${escapeRegex$1(tag)}(?=[\s>/])[^>]*>`, "gi");
9546
+ tokenRe.lastIndex = Math.max(0, startIndex);
9547
+ let depth = 0;
9548
+ let match;
9549
+ while ((match = tokenRe.exec(content)) !== null) {
9550
+ const raw = match[0] ?? "";
9551
+ const closing = !!match[1];
9552
+ const selfClosing = !closing && /\/\s*>$/.test(raw);
9553
+ if (closing) {
9554
+ if (depth === 0) return {
9555
+ start: match.index,
9556
+ end: match.index + raw.length
9557
+ };
9558
+ depth--;
9559
+ continue;
9560
+ }
9561
+ if (!selfClosing) depth++;
9562
+ }
9563
+ return null;
9564
+ }
9565
+ function findMatchingCloseOffsetInHtml(content, tag, startIndex = 0) {
9566
+ const range = findMatchingCloseRangeInHtml(content, tag, startIndex);
9567
+ if (!range) return -1;
9568
+ return range.end;
9569
+ }
9570
+ function getTrailingCustomTagDepthInHtml(content, tag) {
9571
+ const tokenRe = new RegExp(String.raw`<\s*(\/?)\s*${escapeRegex$1(tag)}(?=[\s>/])[^>]*>`, "gi");
9572
+ let depth = 0;
9573
+ let match;
9574
+ while ((match = tokenRe.exec(content)) !== null) {
9575
+ const raw = match[0] ?? "";
9576
+ const closing = !!match[1];
9577
+ const selfClosing = !closing && /\/\s*>$/.test(raw);
9578
+ if (closing) {
9579
+ if (depth > 0) depth--;
9580
+ continue;
9581
+ }
9582
+ if (!selfClosing) depth++;
9583
+ }
9584
+ return depth;
9585
+ }
9586
+ function findTagCloseIndexOutsideQuotes$2(html) {
9501
9587
  let inSingle = false;
9502
9588
  let inDouble = false;
9503
9589
  for (let i = 0; i < html.length; i++) {
@@ -9541,7 +9627,7 @@ function findFirstIncompleteTag(content, tagSet) {
9541
9627
  if (idx < 0) continue;
9542
9628
  const tag = (m[1] ?? "").toLowerCase();
9543
9629
  if (!isCommonHtmlTagOrPrefix(tag, tagSet)) continue;
9544
- if (findTagCloseIndexOutsideQuotes$1(content.slice(idx)) !== -1) continue;
9630
+ if (findTagCloseIndexOutsideQuotes$2(content.slice(idx)) !== -1) continue;
9545
9631
  if (!first || idx < first.index) first = {
9546
9632
  index: idx,
9547
9633
  tag,
@@ -9553,7 +9639,7 @@ function findFirstIncompleteTag(content, tagSet) {
9553
9639
  if (idx < 0) continue;
9554
9640
  const tag = (m[1] ?? "").toLowerCase();
9555
9641
  if (!isCommonHtmlTagOrPrefix(tag, tagSet)) continue;
9556
- if (findTagCloseIndexOutsideQuotes$1(content.slice(idx)) !== -1) continue;
9642
+ if (findTagCloseIndexOutsideQuotes$2(content.slice(idx)) !== -1) continue;
9557
9643
  if (!first || idx < first.index) first = {
9558
9644
  index: idx,
9559
9645
  tag,
@@ -9619,7 +9705,7 @@ function fixStreamingHtmlInlineChildren(children, tagSet) {
9619
9705
  cursor = lt + 1;
9620
9706
  continue;
9621
9707
  }
9622
- const closeIdx = findTagCloseIndexOutsideQuotes$1(sub);
9708
+ const closeIdx = findTagCloseIndexOutsideQuotes$2(sub);
9623
9709
  if (closeIdx === -1) {
9624
9710
  pushTextPart("<", baseToken);
9625
9711
  cursor = lt + 1;
@@ -9657,7 +9743,7 @@ function fixStreamingHtmlInlineChildren(children, tagSet) {
9657
9743
  if (pending) {
9658
9744
  pending.buffer += tokenToRaw$1(child);
9659
9745
  pendingAtEnd = pending.buffer;
9660
- const closeIdx = findTagCloseIndexOutsideQuotes$1(pending.buffer);
9746
+ const closeIdx = findTagCloseIndexOutsideQuotes$2(pending.buffer);
9661
9747
  if (closeIdx === -1) continue;
9662
9748
  const tagChunk = pending.buffer.slice(0, closeIdx + 1);
9663
9749
  const afterChunk = pending.buffer.slice(closeIdx + 1);
@@ -9675,7 +9761,7 @@ function fixStreamingHtmlInlineChildren(children, tagSet) {
9675
9761
  if (child.type === "html_inline") {
9676
9762
  const content = tokenToRaw$1(child);
9677
9763
  const tagName = (content.match(TAG_NAME_AT_START_RE)?.[1] ?? "").toLowerCase();
9678
- if (tagName && tagSet.has(tagName) && findTagCloseIndexOutsideQuotes$1(content) === -1) {
9764
+ if (tagName && tagSet.has(tagName) && findTagCloseIndexOutsideQuotes$2(content) === -1) {
9679
9765
  pending = {
9680
9766
  tag: tagName,
9681
9767
  buffer: content,
@@ -9722,6 +9808,7 @@ function applyFixHtmlInlineTokens(md, options = {}) {
9722
9808
  customTagSet.add(name);
9723
9809
  autoCloseInlineTagSet.add(name);
9724
9810
  }
9811
+ const shouldMergeHtmlBlockTag = (tag) => customTagSet.has(tag) || !commonHtmlTags.has(tag);
9725
9812
  md.core.ruler.after("inline", "fix_html_inline_streaming", (state) => {
9726
9813
  const toks = state.tokens ?? [];
9727
9814
  for (const t of toks) {
@@ -9764,15 +9851,13 @@ function applyFixHtmlInlineTokens(md, options = {}) {
9764
9851
  continue;
9765
9852
  }
9766
9853
  const chunk = String(t.content ?? t.raw ?? "");
9767
- const closeRe = new RegExp(`<\\s*\\/\\s*${openTag}\\s*>`, "i");
9768
- const closeMatch = chunk ? closeRe.exec(chunk) : null;
9769
- const isClosingTag$1 = !!closeMatch;
9854
+ const closeEnd = chunk ? findMatchingCloseOffsetInHtml(chunk, openTag) : -1;
9855
+ const isClosingTag$1 = closeEnd !== -1;
9770
9856
  if (chunk) {
9771
9857
  const openToken = toks[openIndex];
9772
- if (closeMatch && typeof closeMatch.index === "number") {
9773
- const end = closeMatch.index + String(closeMatch[0] ?? "").length;
9774
- const before = chunk.slice(0, end);
9775
- const after = chunk.slice(end);
9858
+ if (closeEnd !== -1) {
9859
+ const before = chunk.slice(0, closeEnd);
9860
+ const after = chunk.slice(closeEnd);
9776
9861
  openToken.content = `${String(openToken.content || "")}\n${before}`;
9777
9862
  openToken.loading = false;
9778
9863
  const afterTrimmed = after.replace(/^\s+/, "");
@@ -9806,11 +9891,10 @@ function applyFixHtmlInlineTokens(md, options = {}) {
9806
9891
  const rawContent = String(t.content || "");
9807
9892
  const tag = (rawContent.match(/<\s*(?:\/\s*)?([^\s>/]+)/)?.[1] ?? "").toLowerCase();
9808
9893
  const isClosingTag$1 = /^\s*<\s*\//.test(rawContent);
9809
- if (!tag || !customTagSet.has(tag)) continue;
9894
+ if (!tag || !shouldMergeHtmlBlockTag(tag)) continue;
9810
9895
  if (!isClosingTag$1) {
9811
9896
  if (tag) {
9812
- const closeRe = new RegExp(`<\\s*\\/\\s*${tag}\\s*>`, "i");
9813
- if (!new RegExp(`^\\s*<\\s*${tag}\\b[^>]*\\/\\s*>`, "i").test(rawContent) && !closeRe.test(rawContent)) tagStack.push([tag, i]);
9897
+ if (!new RegExp(`^\\s*<\\s*${tag}\\b[^>]*\\/\\s*>`, "i").test(rawContent) && getTrailingCustomTagDepthInHtml(rawContent, tag) > 0) tagStack.push([tag, i]);
9814
9898
  }
9815
9899
  } else if (tagStack.length > 0 && tag && tagStack[tagStack.length - 1][0] === tag) {
9816
9900
  const [, openIndex] = tagStack[tagStack.length - 1];
@@ -9880,15 +9964,11 @@ function applyFixHtmlInlineTokens(md, options = {}) {
9880
9964
  continue;
9881
9965
  }
9882
9966
  if (tok.type !== "inline") continue;
9883
- const children = Array.isArray(tok.children) ? tok.children : [];
9884
- const closeChildIndex = children.findIndex((c) => {
9885
- if (!c || c.type !== "html_inline") return false;
9886
- const cContent = String(c.content ?? "");
9887
- return /^\s*<\s*\//.test(cContent) && cContent.toLowerCase().includes(top.tag);
9888
- });
9967
+ const children$1 = Array.isArray(tok.children) ? tok.children : [];
9968
+ const closeChildIndex = findMatchingCloseChildIndex(children$1, top.tag);
9889
9969
  if (closeChildIndex !== -1) {
9890
- const beforeChildren = children.slice(0, closeChildIndex + 1);
9891
- const afterChildren = children.slice(closeChildIndex + 1);
9970
+ const beforeChildren = children$1.slice(0, closeChildIndex + 1);
9971
+ const afterChildren = children$1.slice(closeChildIndex + 1);
9892
9972
  const beforeText = beforeChildren.map((c) => String(c?.content ?? c?.raw ?? "")).join("");
9893
9973
  openTok.content = `${String(openTok.content ?? "")}\n${beforeText}`;
9894
9974
  if (Array.isArray(openTok.children)) openTok.children.push(...beforeChildren);
@@ -9931,13 +10011,14 @@ function applyFixHtmlInlineTokens(md, options = {}) {
9931
10011
  continue;
9932
10012
  }
9933
10013
  openTok.content = `${String(openTok.content ?? "")}\n${content}`;
9934
- if (Array.isArray(openTok.children)) openTok.children.push(...children);
10014
+ if (Array.isArray(openTok.children)) openTok.children.push(...children$1);
9935
10015
  toks.splice(i, 1);
9936
10016
  i--;
9937
10017
  continue;
9938
10018
  }
9939
10019
  if (tok.type !== "inline") continue;
9940
- for (const tag of customTagSet) if (getOpenRe(tag).test(content) && !getCloseRe(tag).test(content)) {
10020
+ const children = Array.isArray(tok.children) ? tok.children : [];
10021
+ for (const tag of customTagSet) if ((children.length ? getTrailingOpenDepth(children, tag) : getOpenRe(tag).test(content) && !getCloseRe(tag).test(content) ? 1 : 0) > 0) {
9941
10022
  stack.push({
9942
10023
  tag,
9943
10024
  index: i
@@ -9971,15 +10052,14 @@ function applyFixHtmlInlineTokens(md, options = {}) {
9971
10052
  }
9972
10053
  if (customTagSet.has(tag)) {
9973
10054
  const raw$2 = String(t.content ?? "");
9974
- const closeRe = new RegExp(`<\\/\\s*${tag}\\s*>`, "i");
9975
- t.loading = closeRe.test(raw$2) ? false : t.loading !== void 0 ? t.loading : true;
9976
- const closeMatch$1 = closeRe.exec(raw$2);
9977
- const endTagIndex$1 = closeMatch$1 ? closeMatch$1.index : -1;
9978
- const closeLen$1 = closeMatch$1 ? closeMatch$1[0].length : 0;
10055
+ const openEnd = findTagCloseIndexOutsideQuotes$2(raw$2);
10056
+ const closeRange = openEnd === -1 ? null : findMatchingCloseRangeInHtml(raw$2, tag, openEnd + 1);
10057
+ t.loading = !!closeRange ? false : t.loading !== void 0 ? t.loading : true;
10058
+ const endTagIndex$1 = closeRange?.start ?? -1;
10059
+ const closeLen$1 = closeRange ? closeRange.end - closeRange.start : 0;
9979
10060
  if (endTagIndex$1 !== -1) {
9980
10061
  const rawForNode = raw$2.slice(0, endTagIndex$1 + closeLen$1);
9981
10062
  let inner = "";
9982
- const openEnd = findTagCloseIndexOutsideQuotes$1(raw$2);
9983
10063
  if (openEnd !== -1 && openEnd < endTagIndex$1) inner = raw$2.slice(openEnd + 1, endTagIndex$1);
9984
10064
  t.children = [{
9985
10065
  type: tag,
@@ -13316,7 +13396,6 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
13316
13396
  result.push(currentTextNode);
13317
13397
  }
13318
13398
  function handleTextToken(token) {
13319
- let index = result.length - 1;
13320
13399
  const rawContent = String(token.content ?? "");
13321
13400
  const rawSource = tokens.length === 1 && rawContent.includes("\\") && typeof raw === "string" ? String(raw) : "";
13322
13401
  let content = rawSource ? decodeVisibleTextFromRaw(rawSource) : rawContent.replace(ESCAPED_PUNCTUATION_RE, "$1");
@@ -13327,17 +13406,18 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
13327
13406
  const dollarIndex = content.indexOf("$");
13328
13407
  if (dollarIndex !== -1 && dollarIndex === content.lastIndexOf("$") && content.endsWith("$")) content = content.slice(0, -1);
13329
13408
  if (content.endsWith("undefined") && !raw?.endsWith("undefined")) content = content.slice(0, -9);
13330
- for (; index >= 0; index--) {
13409
+ let trailingTextStart = result.length;
13410
+ let trailingTextContent = "";
13411
+ for (let index = result.length - 1; index >= 0; index--) {
13331
13412
  const item = result[index];
13332
- if (item.type === "text") {
13333
- currentTextNode = null;
13334
- const itemContent = String(item.content ?? "");
13335
- if (!content.startsWith(itemContent)) content = itemContent + content;
13336
- continue;
13337
- }
13338
- break;
13339
- }
13340
- if (index < result.length - 1) result.length = index + 1;
13413
+ if (item.type !== "text") break;
13414
+ trailingTextStart = index;
13415
+ trailingTextContent = String(item.content ?? "") + trailingTextContent;
13416
+ }
13417
+ if (trailingTextStart < result.length) if (content.startsWith(trailingTextContent)) {
13418
+ currentTextNode = null;
13419
+ result.length = trailingTextStart;
13420
+ } else currentTextNode = result[result.length - 1];
13341
13421
  const nextToken = tokens[i + 1];
13342
13422
  if (pPreToken?.type === "list_item_open" && /^\d$/.test(content)) {
13343
13423
  i++;
@@ -14042,7 +14122,57 @@ const VOID_TAGS = new Set([
14042
14122
  "track",
14043
14123
  "wbr"
14044
14124
  ]);
14045
- const CLOSE_TAG_RE_CACHE = /* @__PURE__ */ new Map();
14125
+ function findTagCloseIndexOutsideQuotes$1(input) {
14126
+ let inSingle = false;
14127
+ let inDouble = false;
14128
+ for (let i = 0; i < input.length; i++) {
14129
+ const ch = input[i];
14130
+ if (ch === "\\") {
14131
+ i++;
14132
+ continue;
14133
+ }
14134
+ if (!inDouble && ch === "'") {
14135
+ inSingle = !inSingle;
14136
+ continue;
14137
+ }
14138
+ if (!inSingle && ch === "\"") {
14139
+ inDouble = !inDouble;
14140
+ continue;
14141
+ }
14142
+ if (!inSingle && !inDouble && ch === ">") return i;
14143
+ }
14144
+ return -1;
14145
+ }
14146
+ function findMatchingCloseTagEnd(rawHtml, tag, startIndex) {
14147
+ const lowerTag = tag.toLowerCase();
14148
+ const openTagRe = new RegExp(String.raw`^<\s*${lowerTag}(?=\s|>|/)`, "i");
14149
+ const closeTagRe = new RegExp(String.raw`^<\s*\/\s*${lowerTag}(?=\s|>)`, "i");
14150
+ let depth = 0;
14151
+ let index = Math.max(0, startIndex);
14152
+ while (index < rawHtml.length) {
14153
+ const lt = rawHtml.indexOf("<", index);
14154
+ if (lt === -1) return -1;
14155
+ const slice = rawHtml.slice(lt);
14156
+ if (closeTagRe.test(slice)) {
14157
+ const endRel = findTagCloseIndexOutsideQuotes$1(slice);
14158
+ if (endRel === -1) return -1;
14159
+ if (depth === 0) return lt + endRel + 1;
14160
+ depth--;
14161
+ index = lt + endRel + 1;
14162
+ continue;
14163
+ }
14164
+ if (openTagRe.test(slice)) {
14165
+ const endRel = findTagCloseIndexOutsideQuotes$1(slice);
14166
+ if (endRel === -1) return -1;
14167
+ const rawTag = slice.slice(0, endRel + 1);
14168
+ if (!/\/\s*>$/.test(rawTag)) depth++;
14169
+ index = lt + endRel + 1;
14170
+ continue;
14171
+ }
14172
+ index = lt + 1;
14173
+ }
14174
+ return -1;
14175
+ }
14046
14176
  function parseHtmlBlock(token) {
14047
14177
  const raw = String(token.content ?? "");
14048
14178
  if (/^\s*<!--/.test(raw) || /^\s*<!/.test(raw) || /^\s*<\?/.test(raw)) return {
@@ -14060,14 +14190,11 @@ function parseHtmlBlock(token) {
14060
14190
  tag: "",
14061
14191
  loading: false
14062
14192
  };
14063
- const selfClosing = /^\s*<[^>]*\/\s*>/.test(raw);
14193
+ const openEnd = findTagCloseIndexOutsideQuotes$1(raw);
14194
+ const openTag = openEnd === -1 ? raw : raw.slice(0, openEnd + 1);
14195
+ const selfClosing = openEnd !== -1 && /\/\s*>$/.test(openTag);
14064
14196
  const isVoid = VOID_TAGS.has(tag);
14065
- let closeRe = CLOSE_TAG_RE_CACHE.get(tag);
14066
- if (!closeRe) {
14067
- closeRe = new RegExp(`<\\s*\\/\\s*${tag}\\s*>`, "i");
14068
- CLOSE_TAG_RE_CACHE.set(tag, closeRe);
14069
- }
14070
- const hasClosing = closeRe.test(raw);
14197
+ const hasClosing = (openEnd === -1 ? -1 : findMatchingCloseTagEnd(raw, tag, openEnd + 1)) !== -1;
14071
14198
  const loading = !(isVoid || selfClosing || hasClosing);
14072
14199
  return {
14073
14200
  type: "html_block",
@@ -14297,6 +14424,43 @@ function stripTrailingPartialClosingTag(inner, tag) {
14297
14424
  const re = new RegExp(String.raw`[\t ]*<\s*\/\s*${tag}[^>]*$`, "i");
14298
14425
  return inner.replace(re, "");
14299
14426
  }
14427
+ function escapeRegex(value) {
14428
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
14429
+ }
14430
+ function findMatchingCloseTagRange(rawHtml, tag, startIndex) {
14431
+ if (!rawHtml || !tag) return null;
14432
+ const lowerTag = tag.toLowerCase();
14433
+ const openTagRe = new RegExp(String.raw`^<\s*${escapeRegex(lowerTag)}(?=\s|>|/)`, "i");
14434
+ const closeTagRe = new RegExp(String.raw`^<\s*\/\s*${escapeRegex(lowerTag)}(?=\s|>)`, "i");
14435
+ let depth = 0;
14436
+ let index = Math.max(0, startIndex);
14437
+ while (index < rawHtml.length) {
14438
+ const lt = rawHtml.indexOf("<", index);
14439
+ if (lt === -1) break;
14440
+ const slice = rawHtml.slice(lt);
14441
+ if (closeTagRe.test(slice)) {
14442
+ const endRel = findTagCloseIndexOutsideQuotes(slice);
14443
+ if (endRel === -1) return null;
14444
+ if (depth === 0) return {
14445
+ start: lt,
14446
+ end: lt + endRel + 1
14447
+ };
14448
+ depth--;
14449
+ index = lt + endRel + 1;
14450
+ continue;
14451
+ }
14452
+ if (openTagRe.test(slice)) {
14453
+ const endRel = findTagCloseIndexOutsideQuotes(slice);
14454
+ if (endRel === -1) return null;
14455
+ const raw = slice.slice(0, endRel + 1);
14456
+ if (!/\/\s*>$/.test(raw)) depth++;
14457
+ index = lt + endRel + 1;
14458
+ continue;
14459
+ }
14460
+ index = lt + 1;
14461
+ }
14462
+ return null;
14463
+ }
14300
14464
  function findNextCustomHtmlBlockFromSource(source, tag, startIndex) {
14301
14465
  if (!source || !tag) return null;
14302
14466
  const lowerTag = tag.toLowerCase();
@@ -14402,16 +14566,17 @@ function parseBasicBlockToken(tokens, index, options) {
14402
14566
  const mappedLineStart = Array.isArray(token.map) ? lineToIndex(source, Number(token.map?.[0] ?? 0)) : 0;
14403
14567
  const fromSource = findNextCustomHtmlBlockFromSource(source, tag, Math.max(clampNonNegative(cursor), clampNonNegative(mappedLineStart)));
14404
14568
  if (fromSource) options.__customHtmlBlockCursor = fromSource.end;
14405
- const rawHtml = String(fromSource?.raw ?? htmlBlockNode.content ?? "");
14569
+ const rawHtml = String(fromSource?.raw ?? htmlBlockNode.raw ?? "");
14406
14570
  const openEnd = findTagCloseIndexOutsideQuotes(rawHtml);
14407
- const closeMatch = new RegExp(`<\\s*\\/\\s*${tag}\\s*>`, "i").exec(rawHtml);
14408
- const closeIndex = closeMatch ? closeMatch.index : -1;
14571
+ const openTag = openEnd !== -1 ? rawHtml.slice(0, openEnd + 1) : rawHtml;
14572
+ const selfClosing = openEnd !== -1 && /\/\s*>\s*$/.test(openTag);
14573
+ const closeRange = openEnd === -1 ? null : findMatchingCloseTagRange(rawHtml, tag, openEnd + 1);
14574
+ const closeIndex = closeRange?.start ?? -1;
14409
14575
  let inner = "";
14410
14576
  if (openEnd !== -1) if (closeIndex !== -1 && openEnd < closeIndex) inner = rawHtml.slice(openEnd + 1, closeIndex);
14411
14577
  else inner = rawHtml.slice(openEnd + 1);
14412
14578
  if (closeIndex === -1) inner = stripTrailingPartialClosingTag(inner, tag);
14413
14579
  const attrs = [];
14414
- const openTag = openEnd !== -1 ? rawHtml.slice(0, openEnd + 1) : rawHtml;
14415
14580
  const attrRegex = /\s([\w:-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;
14416
14581
  let m;
14417
14582
  while ((m = attrRegex.exec(openTag)) !== null) {
@@ -14420,12 +14585,13 @@ function parseBasicBlockToken(tokens, index, options) {
14420
14585
  const value = m[2] || m[3] || m[4] || "";
14421
14586
  attrs.push([name, value]);
14422
14587
  }
14588
+ const loading = !options?.final && !selfClosing && closeRange == null;
14423
14589
  return [{
14424
14590
  type: tag,
14425
14591
  tag,
14426
14592
  content: stripWrapperNewlines(inner),
14427
14593
  raw: String(fromSource?.raw ?? htmlBlockNode.raw ?? rawHtml),
14428
- loading: htmlBlockNode.loading,
14594
+ loading,
14429
14595
  attrs: attrs.length ? attrs : void 0
14430
14596
  }, index + 1];
14431
14597
  }
@@ -14820,7 +14986,7 @@ function ensureBlankLineBeforeInlineMultilineCustomHtmlBlocks(markdown, tags) {
14820
14986
  }
14821
14987
  return false;
14822
14988
  };
14823
- const findTagCloseIndexOutsideQuotes$2 = (input) => {
14989
+ const findTagCloseIndexOutsideQuotes$3 = (input) => {
14824
14990
  let inSingle = false;
14825
14991
  let inDouble = false;
14826
14992
  for (let i = 0; i < input.length; i++) {
@@ -14869,7 +15035,7 @@ function ensureBlankLineBeforeInlineMultilineCustomHtmlBlocks(markdown, tags) {
14869
15035
  i++;
14870
15036
  continue;
14871
15037
  }
14872
- const closeIdxRel = findTagCloseIndexOutsideQuotes$2(line.slice(i));
15038
+ const closeIdxRel = findTagCloseIndexOutsideQuotes$3(line.slice(i));
14873
15039
  if (closeIdxRel === -1) {
14874
15040
  hasRenderablePrefix = true;
14875
15041
  i++;
@@ -14973,6 +15139,27 @@ function normalizeCustomHtmlOpeningTagSameLine(markdown, tags) {
14973
15139
  while (i < s.length && isIndentWs(s[i])) i++;
14974
15140
  return s.slice(i);
14975
15141
  };
15142
+ const findTagCloseIndexOutsideQuotes$3 = (input) => {
15143
+ let inSingle = false;
15144
+ let inDouble = false;
15145
+ for (let i = 0; i < input.length; i++) {
15146
+ const ch = input[i];
15147
+ if (ch === "\\") {
15148
+ i++;
15149
+ continue;
15150
+ }
15151
+ if (!inDouble && ch === "'") {
15152
+ inSingle = !inSingle;
15153
+ continue;
15154
+ }
15155
+ if (!inSingle && ch === "\"") {
15156
+ inDouble = !inDouble;
15157
+ continue;
15158
+ }
15159
+ if (!inSingle && !inDouble && ch === ">") return i;
15160
+ }
15161
+ return -1;
15162
+ };
14976
15163
  const hasClosingTagOnLine = (line, from, tag) => {
14977
15164
  const lowerTag = tag.toLowerCase();
14978
15165
  let pos = line.indexOf("<", from);
@@ -15024,8 +15211,9 @@ function normalizeCustomHtmlOpeningTagSameLine(markdown, tags) {
15024
15211
  if (i === nameStart) return line;
15025
15212
  const tagName = line.slice(nameStart, i).toLowerCase();
15026
15213
  if (!tagSet.has(tagName)) return line;
15027
- const gt = line.indexOf(">", i);
15028
- if (gt === -1) return line;
15214
+ const gtRel = findTagCloseIndexOutsideQuotes$3(line.slice(i));
15215
+ if (gtRel === -1) return line;
15216
+ const gt = i + gtRel;
15029
15217
  if (hasClosingTagOnLine(line, gt + 1, tagName)) return line;
15030
15218
  const rest = trimStartIndentWs(line.slice(gt + 1));
15031
15219
  if (!rest) return line;
@@ -15467,6 +15655,22 @@ function parseMarkdownToStructure(markdown, md, options = {}) {
15467
15655
  else result = postResult;
15468
15656
  }
15469
15657
  }
15658
+ if (isFinal) {
15659
+ const seen = /* @__PURE__ */ new WeakSet();
15660
+ const finalizeHtmlBlockLoading = (value) => {
15661
+ if (!value || typeof value !== "object") return;
15662
+ if (seen.has(value)) return;
15663
+ seen.add(value);
15664
+ if (Array.isArray(value)) {
15665
+ for (const item of value) finalizeHtmlBlockLoading(item);
15666
+ return;
15667
+ }
15668
+ const node = value;
15669
+ if (node.type === "html_block" && node.loading === true) node.loading = false;
15670
+ for (const child of Object.values(node)) finalizeHtmlBlockLoading(child);
15671
+ };
15672
+ finalizeHtmlBlockLoading(result);
15673
+ }
15470
15674
  if (options.debug) console.log("Parsed Markdown Tree Structure:", result);
15471
15675
  return result;
15472
15676
  }