@ai-react-markdown/engine 2.7.0 → 2.8.1
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/README.md +1 -1
- package/dist/index.cjs +259 -70
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -78
- package/dist/index.d.ts +4 -78
- package/dist/index.dev.cjs +259 -70
- package/dist/index.dev.cjs.map +1 -1
- package/dist/index.dev.js +259 -66
- package/dist/index.dev.js.map +1 -1
- package/dist/index.js +259 -66
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -90,7 +90,7 @@ for (const frame of ['# Hello', '# Hello\n\nworld', '# Hello\n\nworld and more']
|
|
|
90
90
|
|
|
91
91
|
## Verification
|
|
92
92
|
|
|
93
|
-
The incremental engine ships with a five-layer equivalence stack (fixture pins, fuzz arbiter, direction battery, exhaustive census, arbiter-sensitivity meta-suite) plus a release-gate soak (`scripts/
|
|
93
|
+
The incremental engine ships with a five-layer equivalence stack (fixture pins, fuzz arbiter, direction battery, exhaustive census, arbiter-sensitivity meta-suite) plus a five-leg release-gate soak (`scripts/soak/fiveleg.sh`, from the repo root, with a fresh seed base); the full record lives in `src/experiments/prefixFreeze/README.md`. Every reachable divergence found so far is pinned as a deterministic test.
|
|
94
94
|
|
|
95
95
|
## Runtime support
|
|
96
96
|
|
package/dist/index.cjs
CHANGED
|
@@ -48,7 +48,6 @@ __export(src_exports, {
|
|
|
48
48
|
collectDefLabels: () => collectDefLabels,
|
|
49
49
|
computeFreezeBoundary: () => computeFreezeBoundary,
|
|
50
50
|
createDefLabelScanner: () => createDefLabelScanner,
|
|
51
|
-
createFile: () => createFile,
|
|
52
51
|
createIncrementalLatexPreprocessor: () => createIncrementalLatexPreprocessor,
|
|
53
52
|
createProcessor: () => createProcessor,
|
|
54
53
|
createRegistry: () => createRegistry,
|
|
@@ -65,10 +64,8 @@ __export(src_exports, {
|
|
|
65
64
|
hasLoneSurrogate: () => hasLoneSurrogate,
|
|
66
65
|
highlight: () => highlight,
|
|
67
66
|
isFootnoteSection: () => isFootnoteSection,
|
|
68
|
-
isWhitespaceText: () => isWhitespaceText,
|
|
69
67
|
lastMeaningfulIdx: () => lastMeaningfulIdx,
|
|
70
68
|
measureStage: () => measureStage,
|
|
71
|
-
mergeClassNameAllowlist: () => mergeClassNameAllowlist,
|
|
72
69
|
normalizeForMatch: () => normalizeForMatch,
|
|
73
70
|
normalizeId: () => normalizeId,
|
|
74
71
|
pangu: () => pangu,
|
|
@@ -84,7 +81,6 @@ __export(src_exports, {
|
|
|
84
81
|
shortenDocumentId: () => shortenDocumentId,
|
|
85
82
|
smartypants: () => smartypants,
|
|
86
83
|
sourceIdFromFootnoteLiId: () => sourceIdFromFootnoteLiId,
|
|
87
|
-
splitByProtectedRegions: () => splitByProtectedRegions,
|
|
88
84
|
subscribeStageTimings: () => subscribeStageTimings,
|
|
89
85
|
transformStage: () => transformStage,
|
|
90
86
|
withDefs: () => withDefs
|
|
@@ -519,12 +515,82 @@ var RAW_TEXT_ELEMENTS = /* @__PURE__ */ new Set([
|
|
|
519
515
|
// (oracle review of the r2 batch; regression caught before release).
|
|
520
516
|
"plaintext"
|
|
521
517
|
]);
|
|
518
|
+
var P5_MARKUP_RE = /<[!/?A-Za-z]/;
|
|
522
519
|
var TYPE6_START_RE = /^<\/?([A-Za-z][A-Za-z0-9-]*)(?:[ \t\r]|\/?>|$)/;
|
|
523
520
|
var TYPE1_START_RE = /^<(script|pre|style|textarea)(?:[ \t\r]|>|$)/i;
|
|
524
521
|
var TYPE1_CLOSE_RE = /<\/(?:script|pre|style|textarea)>/i;
|
|
525
|
-
var
|
|
526
|
-
var
|
|
522
|
+
var isSpaceTab = (c) => c === 32 || c === 9;
|
|
523
|
+
var isAsciiAlpha = (c) => c >= 65 && c <= 90 || c >= 97 && c <= 122;
|
|
524
|
+
var isAlnum = (c) => isAsciiAlpha(c) || c >= 48 && c <= 57;
|
|
525
|
+
var isAttrNameRest = (c) => isAlnum(c) || c === 45 || c === 46 || c === 58 || c === 95;
|
|
526
|
+
var isUnquotedExit = (c) => Number.isNaN(c) || c === 34 || c === 39 || c === 47 || c === 60 || c === 61 || c === 62 || c === 96 || isSpaceTab(c);
|
|
527
|
+
var completeOpenTagRest = (t, from) => {
|
|
528
|
+
let i = from;
|
|
529
|
+
for (; ; ) {
|
|
530
|
+
const c = t.charCodeAt(i);
|
|
531
|
+
if (c === 47) {
|
|
532
|
+
i += 1;
|
|
533
|
+
break;
|
|
534
|
+
}
|
|
535
|
+
if (isSpaceTab(c)) {
|
|
536
|
+
i += 1;
|
|
537
|
+
continue;
|
|
538
|
+
}
|
|
539
|
+
if (!(c === 58 || c === 95 || isAsciiAlpha(c))) break;
|
|
540
|
+
i += 1;
|
|
541
|
+
while (isAttrNameRest(t.charCodeAt(i))) i += 1;
|
|
542
|
+
for (; ; ) {
|
|
543
|
+
while (isSpaceTab(t.charCodeAt(i))) i += 1;
|
|
544
|
+
if (t.charCodeAt(i) !== 61) break;
|
|
545
|
+
i += 1;
|
|
546
|
+
while (isSpaceTab(t.charCodeAt(i))) i += 1;
|
|
547
|
+
const v = t.charCodeAt(i);
|
|
548
|
+
if (Number.isNaN(v) || v === 60 || v === 61 || v === 62 || v === 96) return -1;
|
|
549
|
+
if (v === 34 || v === 39) {
|
|
550
|
+
i += 1;
|
|
551
|
+
while (t.charCodeAt(i) !== v) {
|
|
552
|
+
if (i >= t.length) return -1;
|
|
553
|
+
i += 1;
|
|
554
|
+
}
|
|
555
|
+
i += 1;
|
|
556
|
+
const a = t.charCodeAt(i);
|
|
557
|
+
if (!(a === 47 || a === 62 || isSpaceTab(a))) return -1;
|
|
558
|
+
break;
|
|
559
|
+
}
|
|
560
|
+
while (!isUnquotedExit(t.charCodeAt(i))) i += 1;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
return t.charCodeAt(i) === 62 ? i + 1 : -1;
|
|
564
|
+
};
|
|
565
|
+
var isType7Line = (line) => {
|
|
566
|
+
const cr = line.indexOf("\r");
|
|
567
|
+
const t = cr === -1 ? line : line.slice(0, cr);
|
|
568
|
+
if (t.charCodeAt(0) !== 60) return false;
|
|
569
|
+
let i = 1;
|
|
570
|
+
const closing = t.charCodeAt(i) === 47;
|
|
571
|
+
if (closing) i += 1;
|
|
572
|
+
if (!isAsciiAlpha(t.charCodeAt(i))) return false;
|
|
573
|
+
const nameStart = i;
|
|
574
|
+
i += 1;
|
|
575
|
+
while (isAlnum(t.charCodeAt(i)) || t.charCodeAt(i) === 45) i += 1;
|
|
576
|
+
const c = t.charCodeAt(i);
|
|
577
|
+
if (!(Number.isNaN(c) || c === 47 || c === 62 || isSpaceTab(c))) return false;
|
|
578
|
+
const name = t.slice(nameStart, i).toLowerCase();
|
|
579
|
+
if (!closing && c !== 47 && TYPE1_NAMES.has(name)) return false;
|
|
580
|
+
if (TYPE6_NAMES.has(name)) return false;
|
|
581
|
+
if (closing) {
|
|
582
|
+
while (isSpaceTab(t.charCodeAt(i))) i += 1;
|
|
583
|
+
if (t.charCodeAt(i) !== 62) return false;
|
|
584
|
+
i += 1;
|
|
585
|
+
} else {
|
|
586
|
+
i = completeOpenTagRest(t, i);
|
|
587
|
+
if (i === -1) return false;
|
|
588
|
+
}
|
|
589
|
+
while (isSpaceTab(t.charCodeAt(i))) i += 1;
|
|
590
|
+
return i >= t.length;
|
|
591
|
+
};
|
|
527
592
|
var mdHtml = (b, type) => b.kind === "html" && b.type === type;
|
|
593
|
+
var mdType1RawText = (b) => b.kind === "html" && b.type === 1 && b.raw;
|
|
528
594
|
var mdHtml25 = (b) => b.kind === "html" && b.type >= 2 && b.type <= 5;
|
|
529
595
|
var commentEitherOpen = (md, p5) => mdHtml(md, 2) || p5.kind === "comment";
|
|
530
596
|
var inRawTextTok = (t) => t.kind === "rawText" || t.kind === "script";
|
|
@@ -546,7 +612,13 @@ var VOID_TAGS = /* @__PURE__ */ new Set([
|
|
|
546
612
|
"wbr"
|
|
547
613
|
]);
|
|
548
614
|
var LIST_MARKER_RE = /^ {0,3}(?:[-*+]|\d{1,9}[.)])(?:[ \t]|$)/;
|
|
615
|
+
var CONTAINER_MARKER_RE = /^ {0,3}(?:>|(?:[-*+]|\d{1,9}[.)])[ \t]+\S)/;
|
|
616
|
+
var ATX_HEADING_RE = /^#{1,6}(?:[ \t]|$)/;
|
|
617
|
+
var THEMATIC_BREAK_RE = /^(?:(?:-[ \t]*){3,}|(?:\*[ \t]*){3,}|(?:_[ \t]*){3,})$/;
|
|
618
|
+
var BARE_MARKER_RE = /^(?:[-*+]|\d{1,9}[.)])[ \t]*$/;
|
|
619
|
+
var SETEXT_LEFTOVER_RE = /^(?:=+|--)[ \t]*$/;
|
|
549
620
|
var DEF_LIST_DD_RE = /^ {0,3}:[ \t]/;
|
|
621
|
+
var CLOSE_TAG_ONLY_RE = /^[ \t]*<\/[A-Za-z][A-Za-z0-9-]*[ \t]*>[ \t\r]*$/;
|
|
550
622
|
var FENCE_RE = /^ {0,3}(`{3,}|~{3,})/;
|
|
551
623
|
var MATH_RUN_RE = /^ {0,3}(\$\$+)/;
|
|
552
624
|
var TAG_OR_COMMENT_RE = /<(\/?)([A-Za-z][A-Za-z0-9-]*)(?=[\s/>])([^>]*)>|<!--|-->|--!>/g;
|
|
@@ -655,10 +727,14 @@ function freshCheckpoint(defListEnabled, mathFlow, referenceTaint) {
|
|
|
655
727
|
// doc start counts as a block start
|
|
656
728
|
prevLineWasText: false,
|
|
657
729
|
prevLineWasValidDef: false,
|
|
730
|
+
prevLineOpenContent: false,
|
|
731
|
+
tableMaybeOpen: false,
|
|
732
|
+
containerMaybeOpen: false,
|
|
658
733
|
paragraphHasUnpairedRun: false,
|
|
659
734
|
openBracket: null,
|
|
660
|
-
mayBeRawToMicromark: false,
|
|
661
735
|
p5SealPending: false,
|
|
736
|
+
defBlockMaybeOpen: false,
|
|
737
|
+
fnDefResumable: false,
|
|
662
738
|
phasePoisonedAt: Infinity,
|
|
663
739
|
pendingTruncatedTags: [],
|
|
664
740
|
pendingTruncatedCloses: [],
|
|
@@ -785,10 +861,11 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
785
861
|
newest.defListSettled = ln.blank ? true : !canBecomeDdLine(ln.text, true);
|
|
786
862
|
}
|
|
787
863
|
const isBlockStart = cp.prevLineBlank;
|
|
788
|
-
if (cp.p5SealPending && !ln.blank &&
|
|
789
|
-
const defShapedLine = DEF_RE.test(ln.text) || FOOTNOTE_DEF_RE.test(ln.text);
|
|
864
|
+
if (cp.p5SealPending && !ln.blank && cp.mdBlock.kind !== "html" && !(cp.p5Tok.kind === "comment" || cp.p5Tok.kind === "bogus")) {
|
|
865
|
+
const defShapedLine = DEF_RE.test(ln.text) || FOOTNOTE_DEF_RE.test(ln.text) || cp.defBlockMaybeOpen || cp.fnDefResumable && ln.indent >= 4;
|
|
790
866
|
const commentOnly = ln.text.replace(/<!--[\s\S]*?-->/g, " ").replace(/<!--[\s\S]*$/, " ").replace(/[ \t\r]/g, "") === "";
|
|
791
|
-
|
|
867
|
+
const closeTagOnly = CLOSE_TAG_ONLY_RE.test(ln.text);
|
|
868
|
+
if (!defShapedLine && !commentOnly && !closeTagOnly) {
|
|
792
869
|
cp.p5SealPending = false;
|
|
793
870
|
}
|
|
794
871
|
}
|
|
@@ -798,9 +875,13 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
798
875
|
const applyTag = (tag, closing) => {
|
|
799
876
|
if (inRawTextTok(cp.p5Tok)) {
|
|
800
877
|
if (cp.p5Tok.kind === "script" && cp.p5Tok.escaped && !closing && tag === "script") {
|
|
801
|
-
cp.
|
|
878
|
+
cp.p5Tok = { ...cp.p5Tok, double: true };
|
|
802
879
|
}
|
|
803
880
|
if (!(closing && tag === rawTextElement(cp.p5Tok))) return;
|
|
881
|
+
if (cp.p5Tok.kind === "script" && cp.p5Tok.double) {
|
|
882
|
+
cp.p5Tok = { ...cp.p5Tok, double: false };
|
|
883
|
+
return;
|
|
884
|
+
}
|
|
804
885
|
cp.p5Tok = { kind: "data" };
|
|
805
886
|
} else {
|
|
806
887
|
if (!closing && RAW_TEXT_ELEMENTS.has(tag) && foreignRawTextSwitchUnknowable()) {
|
|
@@ -808,7 +889,7 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
808
889
|
} else if (!closing && RAW_TEXT_ELEMENTS.has(tag)) {
|
|
809
890
|
if (cp.p5Tok.kind !== "data") cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
810
891
|
const openedInline = cp.mdBlock.kind !== "html";
|
|
811
|
-
cp.p5Tok = tag === "script" ? { kind: "script", escaped: false, openedInline } : { kind: "rawText", element: tag, openedInline };
|
|
892
|
+
cp.p5Tok = tag === "script" ? { kind: "script", escaped: false, double: false, openedInline } : { kind: "rawText", element: tag, openedInline };
|
|
812
893
|
if (tag === "plaintext") cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
813
894
|
}
|
|
814
895
|
}
|
|
@@ -836,9 +917,14 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
836
917
|
cp.openTotal += 1;
|
|
837
918
|
}
|
|
838
919
|
};
|
|
839
|
-
const definitelyInsideTable = () => (cp.tagBalance.get("table") ?? 0) >
|
|
920
|
+
const definitelyInsideTable = () => (cp.tagBalance.get("table") ?? 0) > cp.pendingTruncatedTags.filter((t) => t === "table").length;
|
|
840
921
|
const strayTablePart = (tag) => TABLE_PART_NAMES.has(tag) && !definitelyInsideTable();
|
|
841
922
|
const commentOpenAtLineStart = commentEitherOpen(cp.mdBlock, cp.p5Tok);
|
|
923
|
+
const bothCommentsOpenAtLineStart = mdHtml(cp.mdBlock, 2) && cp.p5Tok.kind === "comment";
|
|
924
|
+
const inDivergenceWindow = mdHtml(cp.mdBlock, 2) && cp.p5Tok.kind !== "comment" || (mdHtml(cp.mdBlock, 3) || mdHtml(cp.mdBlock, 5)) && cp.p5Tok.kind !== "bogus";
|
|
925
|
+
if (inDivergenceWindow && P5_MARKUP_RE.test(ln.text)) {
|
|
926
|
+
cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
927
|
+
}
|
|
842
928
|
const rawOpenAtLineStart = mdHtml25(cp.mdBlock) || cp.p5Tok.kind === "comment" || cp.p5Tok.kind === "bogus";
|
|
843
929
|
if (cp.mdBlock.kind === "fence") {
|
|
844
930
|
const close = FENCE_RE.exec(ln.text);
|
|
@@ -851,12 +937,15 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
851
937
|
cp.prevLineBlank = false;
|
|
852
938
|
cp.prevLineWasText = false;
|
|
853
939
|
cp.prevLineWasValidDef = false;
|
|
940
|
+
cp.prevLineOpenContent = false;
|
|
941
|
+
cp.tableMaybeOpen = false;
|
|
942
|
+
cp.containerMaybeOpen = false;
|
|
854
943
|
return;
|
|
855
944
|
}
|
|
856
945
|
if (cp.mdBlock.kind !== "math" && !rawOpenAtLineStart) {
|
|
857
946
|
const open = FENCE_RE.exec(ln.text);
|
|
858
947
|
const bogusInfo = open !== null && open[1][0] === "`" && ln.text.slice(ln.text.indexOf(open[1]) + open[1].length).includes("`");
|
|
859
|
-
if (open && !bogusInfo && cp.
|
|
948
|
+
if (open && !bogusInfo && cp.mdBlock.kind === "html") {
|
|
860
949
|
cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
861
950
|
} else if (open && !bogusInfo) {
|
|
862
951
|
if (isBlockStart) {
|
|
@@ -870,6 +959,9 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
870
959
|
cp.prevLineBlank = false;
|
|
871
960
|
cp.prevLineWasText = false;
|
|
872
961
|
cp.prevLineWasValidDef = false;
|
|
962
|
+
cp.prevLineOpenContent = false;
|
|
963
|
+
cp.tableMaybeOpen = false;
|
|
964
|
+
cp.containerMaybeOpen = false;
|
|
873
965
|
return;
|
|
874
966
|
}
|
|
875
967
|
}
|
|
@@ -884,13 +976,16 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
884
976
|
cp.prevLineBlank = false;
|
|
885
977
|
cp.prevLineWasText = false;
|
|
886
978
|
cp.prevLineWasValidDef = false;
|
|
979
|
+
cp.prevLineOpenContent = false;
|
|
980
|
+
cp.tableMaybeOpen = false;
|
|
981
|
+
cp.containerMaybeOpen = false;
|
|
887
982
|
return;
|
|
888
983
|
}
|
|
889
984
|
const mathRun = cp.mathFlow && !rawOpenAtLineStart ? MATH_RUN_RE.exec(ln.text) : null;
|
|
890
985
|
if (mathRun) {
|
|
891
986
|
const rest = ln.text.slice(ln.text.indexOf(mathRun[1]) + mathRun[1].length);
|
|
892
987
|
if (!rest.includes("$")) {
|
|
893
|
-
if (cp.
|
|
988
|
+
if (cp.mdBlock.kind === "html") {
|
|
894
989
|
cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
895
990
|
} else {
|
|
896
991
|
if (isBlockStart) {
|
|
@@ -904,6 +999,9 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
904
999
|
cp.prevLineBlank = false;
|
|
905
1000
|
cp.prevLineWasText = false;
|
|
906
1001
|
cp.prevLineWasValidDef = false;
|
|
1002
|
+
cp.prevLineOpenContent = false;
|
|
1003
|
+
cp.tableMaybeOpen = false;
|
|
1004
|
+
cp.containerMaybeOpen = false;
|
|
907
1005
|
return;
|
|
908
1006
|
}
|
|
909
1007
|
}
|
|
@@ -919,8 +1017,11 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
919
1017
|
}
|
|
920
1018
|
cp.pendingTag = null;
|
|
921
1019
|
if (cp.p5Tok.kind === "bogus") {
|
|
922
|
-
|
|
923
|
-
|
|
1020
|
+
if (mdHtml25(cp.mdBlock)) {
|
|
1021
|
+
} else {
|
|
1022
|
+
cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
1023
|
+
cp.p5Tok = { kind: "data" };
|
|
1024
|
+
}
|
|
924
1025
|
}
|
|
925
1026
|
if (cp.mdBlock.kind === "html" && cp.mdBlock.type >= 6) cp.mdBlock = { kind: "none" };
|
|
926
1027
|
cp.blankRun += 1;
|
|
@@ -942,7 +1043,6 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
942
1043
|
cp.paragraphHasUnpairedRun = false;
|
|
943
1044
|
cp.openBracket = null;
|
|
944
1045
|
if (!mdHtml(cp.mdBlock, 1)) {
|
|
945
|
-
cp.mayBeRawToMicromark = false;
|
|
946
1046
|
if (inRawTextTok(cp.p5Tok) && !cp.p5Tok.openedInline) {
|
|
947
1047
|
cp.phasePoisonedAt = 0;
|
|
948
1048
|
}
|
|
@@ -950,6 +1050,10 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
950
1050
|
cp.prevLineBlank = true;
|
|
951
1051
|
cp.prevLineWasText = false;
|
|
952
1052
|
cp.prevLineWasValidDef = false;
|
|
1053
|
+
cp.defBlockMaybeOpen = false;
|
|
1054
|
+
cp.prevLineOpenContent = false;
|
|
1055
|
+
cp.tableMaybeOpen = false;
|
|
1056
|
+
cp.containerMaybeOpen = false;
|
|
953
1057
|
return;
|
|
954
1058
|
}
|
|
955
1059
|
if (isBlockStart) {
|
|
@@ -961,24 +1065,35 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
961
1065
|
const tagStart = ln.indent <= 3 ? /^<\/?([A-Za-z][A-Za-z0-9-]*)/.exec(mdTrimStart(ln.text)) : null;
|
|
962
1066
|
if (tagStart) {
|
|
963
1067
|
const noRealBlockOpen = cp.mdBlock.kind !== "html";
|
|
964
|
-
|
|
965
|
-
if (
|
|
966
|
-
if (!TYPE6_NAMES.has(tagStart[1].toLowerCase())) cp.hazardVerdict = true;
|
|
1068
|
+
const t1 = noRealBlockOpen ? TYPE1_START_RE.exec(mdTrimStart(ln.text)) : null;
|
|
1069
|
+
if (t1) cp.mdBlock = { kind: "html", type: 1, raw: RAW_TEXT_ELEMENTS.has(t1[1].toLowerCase()) };
|
|
967
1070
|
if (cp.mdBlock.kind !== "html") {
|
|
968
1071
|
const t = mdTrimStart(ln.text);
|
|
969
1072
|
const t6 = TYPE6_START_RE.exec(t);
|
|
970
|
-
const t7 = TYPE7_LINE_RE.exec(t);
|
|
971
1073
|
const realT6 = t6 !== null && TYPE6_NAMES.has(t6[1].toLowerCase());
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
1074
|
+
const t1Line = TYPE1_START_RE.test(t);
|
|
1075
|
+
const type7Shaped = !realT6 && !t1Line && isType7Line(t);
|
|
1076
|
+
if (realT6 || t1Line || // Type 7 cannot interrupt CONTENT (micromark's paragraph/definition
|
|
1077
|
+
// construct — `prevLineOpenContent`, the exact interrupt input; the
|
|
1078
|
+
// old `prevLineWasText` gate refused after headings, terminator
|
|
1079
|
+
// lines and fence closes, where micromark measurably opens). The
|
|
1080
|
+
// classifier itself is exact too (isType7Line) — including closing
|
|
1081
|
+
// raw-text names (`</style>` alone is type 7, measured) and
|
|
1082
|
+
// quoted-`>` attribute values.
|
|
1083
|
+
!cp.prevLineOpenContent && type7Shaped) {
|
|
975
1084
|
if (cp.mdBlock.kind === "none") cp.mdBlock = { kind: "html", type: realT6 ? 6 : 7 };
|
|
1085
|
+
} else if (cp.prevLineOpenContent && cp.tableMaybeOpen && type7Shaped) {
|
|
1086
|
+
cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
1087
|
+
}
|
|
1088
|
+
if (type7Shaped && cp.containerMaybeOpen) {
|
|
1089
|
+
cp.phasePoisonedAt = Math.min(cp.phasePoisonedAt, ln.start);
|
|
976
1090
|
}
|
|
977
1091
|
}
|
|
978
1092
|
}
|
|
979
|
-
const inRawText = cp.mayBeRawToMicromark || rawOpenAtLineStart;
|
|
980
1093
|
const rawFlowStart = ln.indent <= 3 && /^<(?:!--|\?|![A-Za-z]|!\[CDATA\[)/.test(mdTrimStart(ln.text));
|
|
981
|
-
const
|
|
1094
|
+
const htmlOwnedLine = cp.mdBlock.kind === "html" || rawOpenAtLineStart || rawFlowStart;
|
|
1095
|
+
const maskingSuppressed = htmlOwnedLine || inRawTextTok(cp.p5Tok);
|
|
1096
|
+
const { masked, unpaired } = maskingSuppressed ? { masked: null, unpaired: false } : maskIntraLineCodeSpans(ln.text, cp.paragraphHasUnpairedRun);
|
|
982
1097
|
if (unpaired) cp.paragraphHasUnpairedRun = true;
|
|
983
1098
|
const scanText = masked ?? ln.text;
|
|
984
1099
|
const defRawToMicromark = cp.mdBlock.kind === "html" || rawOpenAtLineStart || inRawTextTok(cp.p5Tok);
|
|
@@ -990,30 +1105,27 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
990
1105
|
};
|
|
991
1106
|
let inlineRawOpenerIdx = -1;
|
|
992
1107
|
while (pos < scanText.length) {
|
|
993
|
-
if (mdHtml(cp.mdBlock, 3)) {
|
|
994
|
-
const
|
|
995
|
-
const
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
if (c === -1) {
|
|
1011
|
-
rawSpans.push([pos, scanText.length]);
|
|
1012
|
-
break;
|
|
1108
|
+
if (mdHtml(cp.mdBlock, 3) || mdHtml(cp.mdBlock, 5)) {
|
|
1109
|
+
const isPi = mdHtml(cp.mdBlock, 3);
|
|
1110
|
+
const term = isPi ? "?>" : "]]>";
|
|
1111
|
+
const c = scanText.indexOf(term, pos);
|
|
1112
|
+
const mdEnd = c === -1 ? scanText.length : c + term.length;
|
|
1113
|
+
if (cp.p5Tok.kind === "bogus") {
|
|
1114
|
+
const gt = scanText.indexOf(">", pos);
|
|
1115
|
+
if (gt !== -1 && (c === -1 || gt !== c + term.length - 1)) {
|
|
1116
|
+
cp.p5Tok = { kind: "data" };
|
|
1117
|
+
rawSpans.push([pos, gt + 1]);
|
|
1118
|
+
if (P5_MARKUP_RE.test(scanText.slice(gt + 1, c === -1 ? scanText.length : c))) {
|
|
1119
|
+
poisonRawDivergence();
|
|
1120
|
+
}
|
|
1121
|
+
} else {
|
|
1122
|
+
rawSpans.push([pos, mdEnd]);
|
|
1123
|
+
if (c !== -1) cp.p5Tok = { kind: "data" };
|
|
1124
|
+
}
|
|
1013
1125
|
}
|
|
1014
|
-
|
|
1126
|
+
if (c === -1) break;
|
|
1015
1127
|
cp.mdBlock = { kind: "none" };
|
|
1016
|
-
pos =
|
|
1128
|
+
pos = mdEnd;
|
|
1017
1129
|
continue;
|
|
1018
1130
|
}
|
|
1019
1131
|
if (mdHtml(cp.mdBlock, 4)) {
|
|
@@ -1039,7 +1151,12 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1039
1151
|
pos = c + 1;
|
|
1040
1152
|
continue;
|
|
1041
1153
|
}
|
|
1042
|
-
if (commentOpenAtLineStart || inRawTextTok(cp.p5Tok) ||
|
|
1154
|
+
if (commentOpenAtLineStart || inRawTextTok(cp.p5Tok) || mdType1RawText(cp.mdBlock)) {
|
|
1155
|
+
if (inRawTextTok(cp.p5Tok) && cp.p5Tok.openedInline && (tailCarriesRetroactive(ln.text) || /<template(?![a-z0-9-])/i.test(ln.text))) {
|
|
1156
|
+
cp.phasePoisonedAt = 0;
|
|
1157
|
+
}
|
|
1158
|
+
break;
|
|
1159
|
+
}
|
|
1043
1160
|
const pi = scanText.indexOf("<?", pos);
|
|
1044
1161
|
const cd = scanText.indexOf("<![CDATA[", pos);
|
|
1045
1162
|
const dm = scanText.slice(pos).search(/<![A-Za-z]/);
|
|
@@ -1056,7 +1173,8 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1056
1173
|
pos = bogus + 2;
|
|
1057
1174
|
} else if (first === cd) {
|
|
1058
1175
|
rawSpans.push([cd, cd + 9]);
|
|
1059
|
-
cp.mdBlock = { kind: "html", type: 5 };
|
|
1176
|
+
if (cp.mdBlock.kind === "none") cp.mdBlock = { kind: "html", type: 5 };
|
|
1177
|
+
if (cp.p5Tok.kind === "data") cp.p5Tok = { kind: "bogus" };
|
|
1060
1178
|
if (!isMdBlank(scanText.slice(0, cd)) || ln.indent > 3) inlineRawOpenerIdx = cd;
|
|
1061
1179
|
pos = cd + 9;
|
|
1062
1180
|
} else if (first === pi) {
|
|
@@ -1067,13 +1185,15 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1067
1185
|
continue;
|
|
1068
1186
|
}
|
|
1069
1187
|
rawSpans.push([pi, pi + 2]);
|
|
1070
|
-
cp.mdBlock = { kind: "html", type: 3 };
|
|
1188
|
+
if (cp.mdBlock.kind === "none") cp.mdBlock = { kind: "html", type: 3 };
|
|
1189
|
+
if (cp.p5Tok.kind === "data") cp.p5Tok = { kind: "bogus" };
|
|
1071
1190
|
if (!isMdBlank(scanText.slice(0, pi)) || ln.indent > 3) inlineRawOpenerIdx = pi;
|
|
1072
1191
|
pos = pi + 2;
|
|
1073
1192
|
} else {
|
|
1074
1193
|
rawSpans.push([decl, decl + 2]);
|
|
1075
1194
|
if (ln.indent <= 3 && /^doctype/i.test(scanText.slice(decl + 2))) cp.phasePoisonedAt = 0;
|
|
1076
|
-
cp.mdBlock = { kind: "html", type: 4 };
|
|
1195
|
+
if (cp.mdBlock.kind === "none") cp.mdBlock = { kind: "html", type: 4 };
|
|
1196
|
+
if (cp.p5Tok.kind === "data") cp.p5Tok = { kind: "bogus" };
|
|
1077
1197
|
if (!isMdBlank(scanText.slice(0, decl)) || ln.indent > 3) inlineRawOpenerIdx = decl;
|
|
1078
1198
|
pos = decl + 2;
|
|
1079
1199
|
}
|
|
@@ -1110,7 +1230,7 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1110
1230
|
if (inRawTextTok(cp.p5Tok) && (m[0] === "<!--" || m[0] === "-->" || m[0] === "--!>")) {
|
|
1111
1231
|
if (cp.p5Tok.kind === "script") {
|
|
1112
1232
|
if (m[0] === "<!--") cp.p5Tok = { ...cp.p5Tok, escaped: true };
|
|
1113
|
-
if (m[0] === "-->") cp.p5Tok = { ...cp.p5Tok, escaped: false };
|
|
1233
|
+
if (m[0] === "-->") cp.p5Tok = { ...cp.p5Tok, escaped: false, double: false };
|
|
1114
1234
|
}
|
|
1115
1235
|
continue;
|
|
1116
1236
|
}
|
|
@@ -1122,7 +1242,9 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1122
1242
|
if (cp.p5Tok.kind === "comment") cp.p5Tok = { kind: "data" };
|
|
1123
1243
|
} else if (next === "!>" || next === "-!") {
|
|
1124
1244
|
if (cp.p5Tok.kind === "comment") cp.p5Tok = { kind: "data" };
|
|
1125
|
-
|
|
1245
|
+
if (mdHtml(cp.mdBlock, 2) && P5_MARKUP_RE.test(tagText.slice(m.index + m[0].length))) {
|
|
1246
|
+
poisonRawDivergence();
|
|
1247
|
+
}
|
|
1126
1248
|
}
|
|
1127
1249
|
continue;
|
|
1128
1250
|
}
|
|
@@ -1140,7 +1262,9 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1140
1262
|
continue;
|
|
1141
1263
|
}
|
|
1142
1264
|
if (m[0] === "--!>") {
|
|
1143
|
-
if (
|
|
1265
|
+
if (mdHtml(cp.mdBlock, 2) && P5_MARKUP_RE.test(tagText.slice(m.index + m[0].length))) {
|
|
1266
|
+
poisonRawDivergence();
|
|
1267
|
+
}
|
|
1144
1268
|
if (cp.p5Tok.kind === "comment") cp.p5Tok = { kind: "data" };
|
|
1145
1269
|
continue;
|
|
1146
1270
|
}
|
|
@@ -1231,14 +1355,16 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1231
1355
|
applyTag(tag, closing);
|
|
1232
1356
|
const rawLastLt = ln.text.lastIndexOf("<");
|
|
1233
1357
|
const rawTruncated = rawLastLt !== -1 && !ln.text.includes(">", rawLastLt);
|
|
1234
|
-
if (!closing && !
|
|
1358
|
+
if (!closing && !(htmlOwnedLine || inRawTextTok(cp.p5Tok)) && rawTruncated) {
|
|
1359
|
+
cp.pendingTruncatedTags.push(tag);
|
|
1360
|
+
}
|
|
1235
1361
|
}
|
|
1236
1362
|
}
|
|
1237
1363
|
}
|
|
1238
1364
|
}
|
|
1239
1365
|
}
|
|
1240
1366
|
const effectiveOpen = cp.openTotal - cp.pendingTruncatedTags.length;
|
|
1241
|
-
if ((
|
|
1367
|
+
if ((htmlOwnedLine || inRawTextTok(cp.p5Tok)) && effectiveOpen <= 0) {
|
|
1242
1368
|
let masked2 = "";
|
|
1243
1369
|
let cursor = 0;
|
|
1244
1370
|
for (const [from, to] of rawSpans) {
|
|
@@ -1246,7 +1372,7 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1246
1372
|
cursor = to;
|
|
1247
1373
|
}
|
|
1248
1374
|
masked2 += scanText.slice(cursor);
|
|
1249
|
-
if (floatingResidue(masked2,
|
|
1375
|
+
if (floatingResidue(masked2, bothCommentsOpenAtLineStart).length > 0) {
|
|
1250
1376
|
cp.p5SealPending = true;
|
|
1251
1377
|
}
|
|
1252
1378
|
}
|
|
@@ -1255,12 +1381,36 @@ function processConfirmedLine(cp, ln, text) {
|
|
|
1255
1381
|
}
|
|
1256
1382
|
if (mdHtml(cp.mdBlock, 1) && TYPE1_CLOSE_RE.test(ln.text)) {
|
|
1257
1383
|
cp.mdBlock = { kind: "none" };
|
|
1258
|
-
cp.
|
|
1384
|
+
if (inRawTextTok(cp.p5Tok)) cp.phasePoisonedAt = 0;
|
|
1259
1385
|
}
|
|
1260
1386
|
cp.blankRun = 0;
|
|
1261
1387
|
cp.prevLineBlank = false;
|
|
1262
1388
|
cp.prevLineWasText = true;
|
|
1389
|
+
{
|
|
1390
|
+
const tt = mdTrimStart(ln.text);
|
|
1391
|
+
let openContent;
|
|
1392
|
+
if (htmlOwnedLine) {
|
|
1393
|
+
openContent = false;
|
|
1394
|
+
} else if (ln.indent >= 4) {
|
|
1395
|
+
openContent = cp.prevLineOpenContent;
|
|
1396
|
+
} else if (ATX_HEADING_RE.test(tt) || THEMATIC_BREAK_RE.test(tt)) {
|
|
1397
|
+
openContent = false;
|
|
1398
|
+
} else if (BARE_MARKER_RE.test(tt)) {
|
|
1399
|
+
openContent = tt[0] === "-" ? false : cp.prevLineOpenContent;
|
|
1400
|
+
} else if (SETEXT_LEFTOVER_RE.test(tt)) {
|
|
1401
|
+
openContent = cp.tableMaybeOpen && cp.prevLineOpenContent ? true : !cp.prevLineOpenContent;
|
|
1402
|
+
} else {
|
|
1403
|
+
openContent = true;
|
|
1404
|
+
}
|
|
1405
|
+
cp.prevLineOpenContent = openContent;
|
|
1406
|
+
cp.tableMaybeOpen = !htmlOwnedLine && ln.text.includes("|") || cp.tableMaybeOpen && openContent;
|
|
1407
|
+
const containerMarker = CONTAINER_MARKER_RE.test(ln.text) || FOOTNOTE_DEF_RE.test(ln.text) || cp.defListEnabled && DEF_LIST_DD_RE.test(ln.text);
|
|
1408
|
+
cp.containerMaybeOpen = openContent && (containerMarker || cp.containerMaybeOpen);
|
|
1409
|
+
}
|
|
1263
1410
|
cp.prevLineWasValidDef = validLinkDef;
|
|
1411
|
+
cp.defBlockMaybeOpen = cp.defBlockMaybeOpen || DEF_RE.test(ln.text) || FOOTNOTE_DEF_RE.test(ln.text);
|
|
1412
|
+
if (FOOTNOTE_DEF_RE.test(ln.text)) cp.fnDefResumable = true;
|
|
1413
|
+
else if (isBlockStart && ln.indent <= 3) cp.fnDefResumable = false;
|
|
1264
1414
|
}
|
|
1265
1415
|
|
|
1266
1416
|
// src/components/incrementalParse/spliceParse.ts
|
|
@@ -1509,6 +1659,33 @@ function headRoutedCaptureUnclosed(values) {
|
|
|
1509
1659
|
return !new RegExp(`</${name}(?=[\\s/>])`, "i").test(after);
|
|
1510
1660
|
}
|
|
1511
1661
|
var STRAY_SYNTHESIZED_END_TAG_RE = /<\/(?:br|p)\b/i;
|
|
1662
|
+
var RAW_TEXT_OPEN_RE = /<(script|style|textarea|title|xmp|iframe|noembed|noframes|plaintext)(?=[\s/>])/gi;
|
|
1663
|
+
function rawTextRegionCrossesOut(values) {
|
|
1664
|
+
for (const value of values) {
|
|
1665
|
+
let pos = 0;
|
|
1666
|
+
for (; ; ) {
|
|
1667
|
+
RAW_TEXT_OPEN_RE.lastIndex = pos;
|
|
1668
|
+
const open = RAW_TEXT_OPEN_RE.exec(value);
|
|
1669
|
+
if (open === null) break;
|
|
1670
|
+
const name = open[1].toLowerCase();
|
|
1671
|
+
const bodyStart = open.index + open[0].length;
|
|
1672
|
+
const closeRe = new RegExp(`</${name}(?=[\\s/>])`, "ig");
|
|
1673
|
+
closeRe.lastIndex = bodyStart;
|
|
1674
|
+
let close = closeRe.exec(value);
|
|
1675
|
+
if (name === "script") {
|
|
1676
|
+
while (close !== null) {
|
|
1677
|
+
const body = value.slice(bodyStart, close.index);
|
|
1678
|
+
const lastOpen = body.lastIndexOf("<!--");
|
|
1679
|
+
if (lastOpen === -1 || body.indexOf("-->", lastOpen + 4) !== -1) break;
|
|
1680
|
+
close = closeRe.exec(value);
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1683
|
+
if (close === null) return true;
|
|
1684
|
+
pos = close.index + close[0].length;
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
return false;
|
|
1688
|
+
}
|
|
1512
1689
|
function spliceTrees(input) {
|
|
1513
1690
|
const { prevMdast, prevHast, tailMdast, tailHast, content, boundary, injectionPrefix, injectedSegments } = input;
|
|
1514
1691
|
const injectedLen = injectionPrefix.length;
|
|
@@ -1565,7 +1742,9 @@ function spliceTrees(input) {
|
|
|
1565
1742
|
return !(start !== void 0 && start < injectedLen);
|
|
1566
1743
|
});
|
|
1567
1744
|
const tailWrapVisible = tailMdastChildren.some((child) => !isWrapInvisible(child));
|
|
1568
|
-
|
|
1745
|
+
const prefixHtmlValues = prefixMdast.flatMap((c) => c.type === "html" ? [c.value] : []);
|
|
1746
|
+
if (hasStrayTablePart(prefixHtmlValues)) return null;
|
|
1747
|
+
if (rawTextRegionCrossesOut(prefixHtmlValues)) return null;
|
|
1569
1748
|
const leadingHtml = [];
|
|
1570
1749
|
for (const child of tailMdastChildren) {
|
|
1571
1750
|
if (isWrapInvisible(child)) continue;
|
|
@@ -1746,7 +1925,7 @@ function alignPrefixCut(prefixMdast, cutRegion, tailWrapVisible) {
|
|
|
1746
1925
|
if (sepBuffer.length !== trailingGaps && sepBuffer.length !== trailingGaps + 1) return null;
|
|
1747
1926
|
for (let j = pairIdx + 1; j < visibles.length; j++) {
|
|
1748
1927
|
const v = visibles[j];
|
|
1749
|
-
if (v.type === "html" &&
|
|
1928
|
+
if (v.type === "html" && !isExactSanitizeStrippedConstruct(v.value)) return null;
|
|
1750
1929
|
}
|
|
1751
1930
|
for (let i = 0; i < trailingGaps + seam; i++) {
|
|
1752
1931
|
out.push({ type: "text", value: "\n" });
|
|
@@ -1796,7 +1975,7 @@ function tailLeadingTextIsHoist(tailMdastChildren, tailHastChildren) {
|
|
|
1796
1975
|
if (!isSeparatorText(firstText)) {
|
|
1797
1976
|
if (firstText.type === "text" && firstText.position === void 0 && firstVisible?.type === "html") {
|
|
1798
1977
|
if (/^\s*<\/[A-Za-z][A-Za-z0-9-]*\s*>/.test(firstVisible.value)) return true;
|
|
1799
|
-
if (
|
|
1978
|
+
if (isSanitizeStrippedConstruct(firstVisible.value)) return false;
|
|
1800
1979
|
return null;
|
|
1801
1980
|
}
|
|
1802
1981
|
return false;
|
|
@@ -1812,12 +1991,26 @@ function tailLeadingTextIsHoist(tailMdastChildren, tailHastChildren) {
|
|
|
1812
1991
|
}
|
|
1813
1992
|
}
|
|
1814
1993
|
if (firstVisible.type === "math") return false;
|
|
1815
|
-
if (firstVisible.type === "html" &&
|
|
1994
|
+
if (firstVisible.type === "html" && isSanitizeStrippedConstruct(firstVisible.value)) return false;
|
|
1816
1995
|
return null;
|
|
1817
1996
|
}
|
|
1818
|
-
function
|
|
1997
|
+
function isSanitizeStrippedConstruct(value) {
|
|
1819
1998
|
const v = value.trim();
|
|
1820
|
-
return v.startsWith("<!--") && v.endsWith("-->") || v.startsWith("<?") && v.endsWith("?>") || v.startsWith("<![CDATA[") && v.endsWith("]]>") || /^<![A-Za-z]/.test(v) && v.endsWith(">");
|
|
1999
|
+
return v.startsWith("<!--") && v.endsWith("-->") || v.startsWith("<?") && v.endsWith("?>") || v.startsWith("<![CDATA[") && v.endsWith("]]>") || /^<![A-Za-z]/.test(v) && !/^<!doctype/i.test(v) && v.endsWith(">");
|
|
2000
|
+
}
|
|
2001
|
+
function isExactSanitizeStrippedConstruct(value) {
|
|
2002
|
+
if (value.startsWith("<!--")) {
|
|
2003
|
+
if (value.length < 7 || !value.endsWith("-->")) return false;
|
|
2004
|
+
const close = value.indexOf("-->", 4);
|
|
2005
|
+
const bangClose = value.indexOf("--!>", 4);
|
|
2006
|
+
if (close !== value.length - 3) return false;
|
|
2007
|
+
return bangClose === -1 || bangClose > close;
|
|
2008
|
+
}
|
|
2009
|
+
if (/^<!doctype/i.test(value)) return false;
|
|
2010
|
+
if (value.startsWith("<?") || /^<!(?:[A-Za-z]|\[CDATA\[)/.test(value)) {
|
|
2011
|
+
return value.indexOf(">") === value.length - 1;
|
|
2012
|
+
}
|
|
2013
|
+
return false;
|
|
1821
2014
|
}
|
|
1822
2015
|
function isSeparatorText(node) {
|
|
1823
2016
|
return node.type === "text" && node.position === void 0 && node.value.trim() === "";
|
|
@@ -4971,7 +5164,6 @@ function createRemendPreprocessor(options) {
|
|
|
4971
5164
|
collectDefLabels,
|
|
4972
5165
|
computeFreezeBoundary,
|
|
4973
5166
|
createDefLabelScanner,
|
|
4974
|
-
createFile,
|
|
4975
5167
|
createIncrementalLatexPreprocessor,
|
|
4976
5168
|
createProcessor,
|
|
4977
5169
|
createRegistry,
|
|
@@ -4988,10 +5180,8 @@ function createRemendPreprocessor(options) {
|
|
|
4988
5180
|
hasLoneSurrogate,
|
|
4989
5181
|
highlight,
|
|
4990
5182
|
isFootnoteSection,
|
|
4991
|
-
isWhitespaceText,
|
|
4992
5183
|
lastMeaningfulIdx,
|
|
4993
5184
|
measureStage,
|
|
4994
|
-
mergeClassNameAllowlist,
|
|
4995
5185
|
normalizeForMatch,
|
|
4996
5186
|
normalizeId,
|
|
4997
5187
|
pangu,
|
|
@@ -5007,7 +5197,6 @@ function createRemendPreprocessor(options) {
|
|
|
5007
5197
|
shortenDocumentId,
|
|
5008
5198
|
smartypants,
|
|
5009
5199
|
sourceIdFromFootnoteLiId,
|
|
5010
|
-
splitByProtectedRegions,
|
|
5011
5200
|
subscribeStageTimings,
|
|
5012
5201
|
transformStage,
|
|
5013
5202
|
withDefs
|