stream-markdown-parser 0.0.60 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7140,6 +7140,7 @@ const BASE_COMMON_HTML_TAGS = new Set([
|
|
|
7140
7140
|
const OPEN_TAG_RE = /<([A-Z][\w-]*)(?=[\s/>]|$)/gi;
|
|
7141
7141
|
const CLOSE_TAG_RE = /<\/\s*([A-Z][\w-]*)(?=[\s/>]|$)/gi;
|
|
7142
7142
|
const TAG_NAME_AT_START_RE = /^<\s*(?:\/\s*)?([A-Z][\w-]*)/i;
|
|
7143
|
+
const STRICT_OPEN_TAG_NAME_AT_START_RE = /^<\s*([A-Z][\w:-]*)(?=[\s/>]|$)/i;
|
|
7143
7144
|
function findTagCloseIndexOutsideQuotes$1(html) {
|
|
7144
7145
|
let inSingle = false;
|
|
7145
7146
|
let inDouble = false;
|
|
@@ -7740,11 +7741,15 @@ function applyFixHtmlInlineTokens(md, options = {}) {
|
|
|
7740
7741
|
}
|
|
7741
7742
|
if (!t.content?.startsWith("<") || t.children?.length !== 1) continue;
|
|
7742
7743
|
const raw = String(t.content);
|
|
7743
|
-
const tagName = raw.match(/<([^\s>/]+)/)?.[1]?.toLowerCase() ?? "";
|
|
7744
|
-
if (!tagName) continue;
|
|
7745
|
-
const isVoid = /\/\s*>\s*$/.test(raw) || VOID_TAGS$2.has(tagName);
|
|
7746
7744
|
const htmlToken = t;
|
|
7747
|
-
|
|
7745
|
+
const onlyChild = htmlToken.children[0];
|
|
7746
|
+
if (onlyChild?.type !== "html_inline") {
|
|
7747
|
+
if (/^<\s*(?:\/\s*)?[A-Z][\w:-]*\s*$/i.test(raw)) htmlToken.children.length = 0;
|
|
7748
|
+
continue;
|
|
7749
|
+
}
|
|
7750
|
+
const strictTagName = String(onlyChild.content ?? raw).match(STRICT_OPEN_TAG_NAME_AT_START_RE)?.[1]?.toLowerCase() ?? "";
|
|
7751
|
+
if (!strictTagName) continue;
|
|
7752
|
+
if (/\/\s*>\s*$/.test(raw) || VOID_TAGS$2.has(strictTagName)) {
|
|
7748
7753
|
htmlToken.children = [{
|
|
7749
7754
|
type: "html_inline",
|
|
7750
7755
|
content: raw
|
|
@@ -8957,6 +8962,56 @@ function isPlainBracketMathLike(content) {
|
|
|
8957
8962
|
if (!(/\\[a-z]+/i.test(stripped) || /[=+*/^<>]|\\times|\\pm|\\cdot|\\le|\\ge|\\neq/.test(stripped) || /[_^]/.test(stripped)) && /\s-\s/.test(stripped)) return false;
|
|
8958
8963
|
return true;
|
|
8959
8964
|
}
|
|
8965
|
+
function buildCodeSpanRanges(src) {
|
|
8966
|
+
const ranges = [];
|
|
8967
|
+
let i = 0;
|
|
8968
|
+
while (i < src.length) {
|
|
8969
|
+
if (src[i] !== "`") {
|
|
8970
|
+
i++;
|
|
8971
|
+
continue;
|
|
8972
|
+
}
|
|
8973
|
+
const openStart = i;
|
|
8974
|
+
let openLen = 1;
|
|
8975
|
+
while (openStart + openLen < src.length && src[openStart + openLen] === "`") openLen++;
|
|
8976
|
+
let j = openStart + openLen;
|
|
8977
|
+
let closeStart = -1;
|
|
8978
|
+
while (j < src.length) {
|
|
8979
|
+
if (src[j] !== "`") {
|
|
8980
|
+
j++;
|
|
8981
|
+
continue;
|
|
8982
|
+
}
|
|
8983
|
+
let runLen = 1;
|
|
8984
|
+
while (j + runLen < src.length && src[j + runLen] === "`") runLen++;
|
|
8985
|
+
if (runLen === openLen) {
|
|
8986
|
+
closeStart = j;
|
|
8987
|
+
break;
|
|
8988
|
+
}
|
|
8989
|
+
j += runLen;
|
|
8990
|
+
}
|
|
8991
|
+
if (closeStart !== -1) {
|
|
8992
|
+
ranges.push([openStart, closeStart + openLen]);
|
|
8993
|
+
i = closeStart + openLen;
|
|
8994
|
+
continue;
|
|
8995
|
+
}
|
|
8996
|
+
i = openStart + openLen;
|
|
8997
|
+
}
|
|
8998
|
+
return ranges;
|
|
8999
|
+
}
|
|
9000
|
+
function findCodeSpanRangeAt(ranges, index) {
|
|
9001
|
+
for (const range of ranges) if (index >= range[0] && index < range[1]) return range;
|
|
9002
|
+
return null;
|
|
9003
|
+
}
|
|
9004
|
+
function isLikelyCurrencyRangeDollar(content, nextChar) {
|
|
9005
|
+
const stripped = String(content ?? "").trim();
|
|
9006
|
+
if (!stripped) return false;
|
|
9007
|
+
if (!/^\d[\d,.]*(?:\s*[~~-]\s*)$/.test(stripped)) return false;
|
|
9008
|
+
return /\d/.test(String(nextChar ?? ""));
|
|
9009
|
+
}
|
|
9010
|
+
function isLikelyPlaceholderDollar(content) {
|
|
9011
|
+
const stripped = String(content ?? "").trim();
|
|
9012
|
+
if (!stripped) return false;
|
|
9013
|
+
return /^(?:\.{3,}|…+)$/.test(stripped);
|
|
9014
|
+
}
|
|
8960
9015
|
function applyMath(md, mathOpts) {
|
|
8961
9016
|
const mathInline = (state, silent) => {
|
|
8962
9017
|
const s = state;
|
|
@@ -8973,6 +9028,7 @@ function applyMath(md, mathOpts) {
|
|
|
8973
9028
|
const initialPos = s.pos;
|
|
8974
9029
|
for (const [open, close] of delimiters) {
|
|
8975
9030
|
const src = s.src;
|
|
9031
|
+
const codeSpanRanges = buildCodeSpanRanges(src);
|
|
8976
9032
|
let foundAny = false;
|
|
8977
9033
|
if (open === "$$" && searchPos !== initialPos) searchPos = initialPos;
|
|
8978
9034
|
let lastIndex = -1;
|
|
@@ -9038,7 +9094,10 @@ function applyMath(md, mathOpts) {
|
|
|
9038
9094
|
const content = text$1.slice(dollarIndex + 1, closingDollarIndex);
|
|
9039
9095
|
const hasBacktick = content.includes("`");
|
|
9040
9096
|
const isEmpty = !content || !content.trim();
|
|
9041
|
-
|
|
9097
|
+
const nextChar = text$1[closingDollarIndex + 1];
|
|
9098
|
+
const isCurrencyRange = isLikelyCurrencyRangeDollar(content, nextChar);
|
|
9099
|
+
const isPlaceholder = isLikelyPlaceholderDollar(content);
|
|
9100
|
+
if (!hasBacktick && !isEmpty && !isCurrencyRange && !isPlaceholder) {
|
|
9042
9101
|
const token = s.push("math_inline", "math", 0);
|
|
9043
9102
|
token.content = normalizeStandaloneBackslashT(content, mathOpts);
|
|
9044
9103
|
token.markup = "$";
|
|
@@ -9102,6 +9161,11 @@ function applyMath(md, mathOpts) {
|
|
|
9102
9161
|
if (searchPos >= src.length) break;
|
|
9103
9162
|
const index = src.indexOf(open, searchPos);
|
|
9104
9163
|
if (index === -1) break;
|
|
9164
|
+
const codeSpanAtIndex = findCodeSpanRangeAt(codeSpanRanges, index);
|
|
9165
|
+
if (codeSpanAtIndex) {
|
|
9166
|
+
searchPos = codeSpanAtIndex[1];
|
|
9167
|
+
continue;
|
|
9168
|
+
}
|
|
9105
9169
|
if (index === lastIndex && searchPos === lastSearchPos) {
|
|
9106
9170
|
stallCount++;
|
|
9107
9171
|
if (stallCount > 2) {
|
|
@@ -9179,7 +9243,11 @@ function applyMath(md, mathOpts) {
|
|
|
9179
9243
|
const content = src.slice(index + open.length, endIdx);
|
|
9180
9244
|
const hasBacktick = content.includes("`");
|
|
9181
9245
|
const isEmpty = !content || !content.trim();
|
|
9182
|
-
|
|
9246
|
+
const isDollar = open === "$";
|
|
9247
|
+
const nextChar = src[endIdx + close.length];
|
|
9248
|
+
const isCurrencyRange = isDollar && isLikelyCurrencyRangeDollar(content, nextChar);
|
|
9249
|
+
const isPlaceholder = isDollar && isLikelyPlaceholderDollar(content);
|
|
9250
|
+
if (strict ? hasBacktick || isEmpty || isCurrencyRange || isPlaceholder : hasBacktick || isEmpty || isCurrencyRange || isPlaceholder || !isDollar && !isMathLike(content)) {
|
|
9183
9251
|
searchPos = endIdx + close.length;
|
|
9184
9252
|
const text$1 = src.slice(s.pos, searchPos);
|
|
9185
9253
|
if (!s.pending) {
|
|
@@ -9261,7 +9329,10 @@ function applyMath(md, mathOpts) {
|
|
|
9261
9329
|
const content = src.slice(dollarIndex + 1, closingDollarIndex);
|
|
9262
9330
|
const hasBacktick = content.includes("`");
|
|
9263
9331
|
const isEmpty = !content || !content.trim();
|
|
9264
|
-
|
|
9332
|
+
const nextChar = src[closingDollarIndex + 1];
|
|
9333
|
+
const isCurrencyRange = isLikelyCurrencyRangeDollar(content, nextChar);
|
|
9334
|
+
const isPlaceholder = isLikelyPlaceholderDollar(content);
|
|
9335
|
+
if (!hasBacktick && !isEmpty && !isCurrencyRange && !isPlaceholder) {
|
|
9265
9336
|
const before = src.slice(searchPos, dollarIndex);
|
|
9266
9337
|
if (before) pushText(before);
|
|
9267
9338
|
const token = s.push("math_inline", "math", 0);
|
|
@@ -10388,7 +10459,17 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
10388
10459
|
}
|
|
10389
10460
|
function handleInlineCodeContent(content, _token) {
|
|
10390
10461
|
if (!content.includes("`")) return false;
|
|
10391
|
-
const
|
|
10462
|
+
const findFirstUnescapedBacktick = (src) => {
|
|
10463
|
+
for (let idx = 0; idx < src.length; idx++) {
|
|
10464
|
+
if (src[idx] !== "`") continue;
|
|
10465
|
+
let slashCount = 0;
|
|
10466
|
+
for (let j = idx - 1; j >= 0 && src[j] === "\\"; j--) slashCount++;
|
|
10467
|
+
if (slashCount % 2 === 0) return idx;
|
|
10468
|
+
}
|
|
10469
|
+
return -1;
|
|
10470
|
+
};
|
|
10471
|
+
const codeStart = findFirstUnescapedBacktick(content);
|
|
10472
|
+
if (codeStart === -1) return false;
|
|
10392
10473
|
let runLen = 1;
|
|
10393
10474
|
for (let k = codeStart + 1; k < content.length && content[k] === "`"; k++) runLen++;
|
|
10394
10475
|
const closingSeq = "`".repeat(runLen);
|
|
@@ -10713,7 +10794,7 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
10713
10794
|
i++;
|
|
10714
10795
|
return;
|
|
10715
10796
|
}
|
|
10716
|
-
if (handleInlineCodeContent(
|
|
10797
|
+
if (handleInlineCodeContent(rawContent, token)) return;
|
|
10717
10798
|
if (handleInlineImageContent(content, token)) return;
|
|
10718
10799
|
if (tokens[i + 1]?.type !== "link_open" && handleInlineLinkContent(content, token)) return;
|
|
10719
10800
|
if (handleEmphasisAndStrikethrough(content, token)) return;
|
|
@@ -12250,8 +12331,8 @@ function ensureBlankLineAfterCustomHtmlCloseBeforeBlockMarkerSameLine(markdown,
|
|
|
12250
12331
|
if (src.replace(/^[\t ]+/, "").startsWith("|")) return match;
|
|
12251
12332
|
const before = src.slice(0, offset).replace(/^[\t ]+/, "");
|
|
12252
12333
|
if (before.length > 0) {
|
|
12253
|
-
const closeTagName = closeTag.match(/^<\s*\/\s*([A-
|
|
12254
|
-
const openTagName = before.match(/^<\s*([A-
|
|
12334
|
+
const closeTagName = closeTag.match(/^<\s*\/\s*([A-Z][\w:-]*)/i)?.[1]?.toLowerCase() ?? "";
|
|
12335
|
+
const openTagName = before.match(/^<\s*([A-Z][\w:-]*)/i)?.[1]?.toLowerCase() ?? "";
|
|
12255
12336
|
if (!closeTagName || !openTagName || closeTagName !== openTagName) return match;
|
|
12256
12337
|
}
|
|
12257
12338
|
return `${closeTag}\n\n`;
|