stream-markdown-parser 0.0.55 → 0.0.57
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 +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +131 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -194,6 +194,8 @@ interface AdmonitionNode extends BaseNode {
|
|
|
194
194
|
interface VmrContainerNode extends BaseNode {
|
|
195
195
|
type: 'vmr_container';
|
|
196
196
|
name: string;
|
|
197
|
+
/** True while the opening `:::` has been seen but the closing `:::` hasn't (streaming mid-state). */
|
|
198
|
+
loading?: boolean;
|
|
197
199
|
attrs?: Record<string, string>;
|
|
198
200
|
children: ParsedNode[];
|
|
199
201
|
}
|
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":";;;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;
|
|
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
|
@@ -6731,6 +6731,95 @@ function container_plugin(md, name, options) {
|
|
|
6731
6731
|
|
|
6732
6732
|
//#endregion
|
|
6733
6733
|
//#region src/plugins/containers.ts
|
|
6734
|
+
function parseLooseInlineAttrs(input) {
|
|
6735
|
+
const s = String(input ?? "").trim();
|
|
6736
|
+
if (!s.startsWith("{") || !s.endsWith("}")) return null;
|
|
6737
|
+
const inner = s.slice(1, -1).trim();
|
|
6738
|
+
if (!inner) return {};
|
|
6739
|
+
if (inner.includes("{") || inner.includes("[") || inner.includes("]")) return null;
|
|
6740
|
+
const parts = [];
|
|
6741
|
+
let buf = "";
|
|
6742
|
+
let inSingle = false;
|
|
6743
|
+
let inDouble = false;
|
|
6744
|
+
for (let i = 0; i < inner.length; i++) {
|
|
6745
|
+
const ch = inner[i];
|
|
6746
|
+
if (ch === "\\") {
|
|
6747
|
+
buf += ch;
|
|
6748
|
+
if (i + 1 < inner.length) {
|
|
6749
|
+
buf += inner[i + 1];
|
|
6750
|
+
i++;
|
|
6751
|
+
}
|
|
6752
|
+
continue;
|
|
6753
|
+
}
|
|
6754
|
+
if (!inDouble && ch === "'") {
|
|
6755
|
+
inSingle = !inSingle;
|
|
6756
|
+
buf += ch;
|
|
6757
|
+
continue;
|
|
6758
|
+
}
|
|
6759
|
+
if (!inSingle && ch === "\"") {
|
|
6760
|
+
inDouble = !inDouble;
|
|
6761
|
+
buf += ch;
|
|
6762
|
+
continue;
|
|
6763
|
+
}
|
|
6764
|
+
if (!inSingle && !inDouble && ch === ",") {
|
|
6765
|
+
parts.push(buf.trim());
|
|
6766
|
+
buf = "";
|
|
6767
|
+
continue;
|
|
6768
|
+
}
|
|
6769
|
+
buf += ch;
|
|
6770
|
+
}
|
|
6771
|
+
if (buf.trim()) parts.push(buf.trim());
|
|
6772
|
+
const out = {};
|
|
6773
|
+
for (const part of parts) {
|
|
6774
|
+
if (!part) continue;
|
|
6775
|
+
let inS = false;
|
|
6776
|
+
let inD = false;
|
|
6777
|
+
let split = -1;
|
|
6778
|
+
for (let i = 0; i < part.length; i++) {
|
|
6779
|
+
const ch = part[i];
|
|
6780
|
+
if (ch === "\\") {
|
|
6781
|
+
i++;
|
|
6782
|
+
continue;
|
|
6783
|
+
}
|
|
6784
|
+
if (!inD && ch === "'") {
|
|
6785
|
+
inS = !inS;
|
|
6786
|
+
continue;
|
|
6787
|
+
}
|
|
6788
|
+
if (!inS && ch === "\"") {
|
|
6789
|
+
inD = !inD;
|
|
6790
|
+
continue;
|
|
6791
|
+
}
|
|
6792
|
+
if (!inS && !inD && ch === ":") {
|
|
6793
|
+
split = i;
|
|
6794
|
+
break;
|
|
6795
|
+
}
|
|
6796
|
+
}
|
|
6797
|
+
if (split === -1) return null;
|
|
6798
|
+
const rawKey = part.slice(0, split).trim();
|
|
6799
|
+
const rawVal = part.slice(split + 1).trim();
|
|
6800
|
+
if (!rawKey) return null;
|
|
6801
|
+
let key = rawKey;
|
|
6802
|
+
if (key.startsWith("\"") && key.endsWith("\"") || key.startsWith("'") && key.endsWith("'")) try {
|
|
6803
|
+
key = JSON.parse(key.replace(/^'/, "\"").replace(/'$/, "\""));
|
|
6804
|
+
} catch {
|
|
6805
|
+
return null;
|
|
6806
|
+
}
|
|
6807
|
+
if (!/^[_$A-Z][\w$-]*$/i.test(key)) return null;
|
|
6808
|
+
let value;
|
|
6809
|
+
if (!rawVal) value = "";
|
|
6810
|
+
else if (rawVal.startsWith("\"") && rawVal.endsWith("\"") || rawVal.startsWith("'") && rawVal.endsWith("'")) try {
|
|
6811
|
+
value = JSON.parse(rawVal.replace(/^'/, "\"").replace(/'$/, "\""));
|
|
6812
|
+
} catch {
|
|
6813
|
+
value = rawVal;
|
|
6814
|
+
}
|
|
6815
|
+
else if (/^-?\d+(?:\.\d+)?$/.test(rawVal)) value = Number(rawVal);
|
|
6816
|
+
else if (rawVal === "true" || rawVal === "false") value = rawVal === "true";
|
|
6817
|
+
else if (rawVal === "null") value = null;
|
|
6818
|
+
else value = rawVal;
|
|
6819
|
+
out[key] = value;
|
|
6820
|
+
}
|
|
6821
|
+
return out;
|
|
6822
|
+
}
|
|
6734
6823
|
function applyContainers(md) {
|
|
6735
6824
|
[
|
|
6736
6825
|
"admonition",
|
|
@@ -6756,23 +6845,31 @@ function applyContainers(md) {
|
|
|
6756
6845
|
if (!nameMatch) return false;
|
|
6757
6846
|
const name = nameMatch[1];
|
|
6758
6847
|
if (!name.trim()) return false;
|
|
6759
|
-
const
|
|
6848
|
+
const trimmedRest = line.slice(nameMatch[0].length).trim();
|
|
6849
|
+
let argsStr;
|
|
6760
6850
|
let jsonStr;
|
|
6761
|
-
const
|
|
6762
|
-
|
|
6763
|
-
|
|
6764
|
-
|
|
6765
|
-
|
|
6766
|
-
|
|
6767
|
-
|
|
6768
|
-
|
|
6769
|
-
|
|
6770
|
-
|
|
6851
|
+
const jsonStart = trimmedRest.indexOf("{");
|
|
6852
|
+
const jsonCandidate = jsonStart >= 0 ? trimmedRest.slice(jsonStart).trimStart() : void 0;
|
|
6853
|
+
if (jsonStart === -1) argsStr = trimmedRest || void 0;
|
|
6854
|
+
else {
|
|
6855
|
+
argsStr = trimmedRest.slice(0, jsonStart).trim() || void 0;
|
|
6856
|
+
if (jsonCandidate?.startsWith("{")) {
|
|
6857
|
+
let depth = 0;
|
|
6858
|
+
let jsonEnd = -1;
|
|
6859
|
+
for (let i = 0; i < jsonCandidate.length; i++) {
|
|
6860
|
+
if (jsonCandidate[i] === "{") depth++;
|
|
6861
|
+
else if (jsonCandidate[i] === "}") depth--;
|
|
6862
|
+
if (depth === 0) {
|
|
6863
|
+
jsonEnd = i + 1;
|
|
6864
|
+
break;
|
|
6865
|
+
}
|
|
6771
6866
|
}
|
|
6867
|
+
if (jsonEnd > 0) jsonStr = jsonCandidate.slice(0, jsonEnd);
|
|
6772
6868
|
}
|
|
6773
|
-
if (
|
|
6869
|
+
if (!jsonStr) argsStr = trimmedRest || void 0;
|
|
6774
6870
|
}
|
|
6775
6871
|
if (silent) return true;
|
|
6872
|
+
const envFinal = !!s.env?.__markstreamFinal;
|
|
6776
6873
|
let nextLine = startLine + 1;
|
|
6777
6874
|
let found = false;
|
|
6778
6875
|
while (nextLine <= endLine) {
|
|
@@ -6784,9 +6881,14 @@ function applyContainers(md) {
|
|
|
6784
6881
|
}
|
|
6785
6882
|
nextLine++;
|
|
6786
6883
|
}
|
|
6787
|
-
if (!found)
|
|
6884
|
+
if (!found) nextLine = endLine;
|
|
6788
6885
|
const tokenOpen = s.push("vmr_container_open", "div", 1);
|
|
6789
6886
|
tokenOpen.attrSet("class", `vmr-container vmr-container-${name}`);
|
|
6887
|
+
tokenOpen.meta = {
|
|
6888
|
+
...tokenOpen.meta,
|
|
6889
|
+
unclosed: !found && !envFinal
|
|
6890
|
+
};
|
|
6891
|
+
if (argsStr) tokenOpen.attrSet("data-args", argsStr);
|
|
6790
6892
|
if (jsonStr) try {
|
|
6791
6893
|
const attrs = JSON.parse(jsonStr);
|
|
6792
6894
|
for (const [key, value] of Object.entries(attrs)) {
|
|
@@ -6794,7 +6896,12 @@ function applyContainers(md) {
|
|
|
6794
6896
|
tokenOpen.attrSet(`data-${key}`, isComplexValue ? JSON.stringify(value) : String(value));
|
|
6795
6897
|
}
|
|
6796
6898
|
} catch {
|
|
6797
|
-
|
|
6899
|
+
const loose = parseLooseInlineAttrs(jsonStr);
|
|
6900
|
+
if (loose) for (const [key, value] of Object.entries(loose)) {
|
|
6901
|
+
const isComplexValue = value != null && typeof value === "object";
|
|
6902
|
+
tokenOpen.attrSet(`data-${key}`, isComplexValue ? JSON.stringify(value) : String(value));
|
|
6903
|
+
}
|
|
6904
|
+
else tokenOpen.attrSet("data-attrs", jsonStr);
|
|
6798
6905
|
}
|
|
6799
6906
|
const contentLines = [];
|
|
6800
6907
|
for (let i = startLine + 1; i < nextLine; i++) {
|
|
@@ -6810,8 +6917,8 @@ function applyContainers(md) {
|
|
|
6810
6917
|
s.md.block.parse(innerSrc, s.md, s.env, innerTokens);
|
|
6811
6918
|
s.tokens.push(...innerTokens);
|
|
6812
6919
|
}
|
|
6813
|
-
s.push("vmr_container_close", "div", -1);
|
|
6814
|
-
s.line = nextLine + 1;
|
|
6920
|
+
if (found) s.push("vmr_container_close", "div", -1);
|
|
6921
|
+
s.line = found ? nextLine + 1 : nextLine;
|
|
6815
6922
|
return true;
|
|
6816
6923
|
}, { alt: [
|
|
6817
6924
|
"paragraph",
|
|
@@ -10847,6 +10954,8 @@ function parseVmrContainer(tokens, index, options) {
|
|
|
10847
10954
|
j = handled[1];
|
|
10848
10955
|
} else j++;
|
|
10849
10956
|
}
|
|
10957
|
+
const hasCloseToken = j < tokens.length && tokens[j].type === "vmr_container_close";
|
|
10958
|
+
const closed = hasCloseToken || !!options?.final;
|
|
10850
10959
|
let raw = `::: ${name}`;
|
|
10851
10960
|
if (Object.keys(containerAttrs).length > 0) raw += ` ${JSON.stringify(containerAttrs)}`;
|
|
10852
10961
|
raw += "\n";
|
|
@@ -10858,10 +10967,11 @@ function parseVmrContainer(tokens, index, options) {
|
|
|
10858
10967
|
return [{
|
|
10859
10968
|
type: "vmr_container",
|
|
10860
10969
|
name,
|
|
10970
|
+
loading: !closed,
|
|
10861
10971
|
attrs: Object.keys(containerAttrs).length > 0 ? containerAttrs : void 0,
|
|
10862
10972
|
children,
|
|
10863
10973
|
raw
|
|
10864
|
-
}, j + 1];
|
|
10974
|
+
}, hasCloseToken ? j + 1 : j];
|
|
10865
10975
|
}
|
|
10866
10976
|
function findTagCloseIndexOutsideQuotes(input) {
|
|
10867
10977
|
let inSingle = false;
|
|
@@ -11462,7 +11572,10 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
|
|
|
11462
11572
|
if (s.src[s.pos] !== "[") return false;
|
|
11463
11573
|
const match = RE_REFERENCE.exec(s.src.slice(s.pos));
|
|
11464
11574
|
if (!match) return false;
|
|
11465
|
-
|
|
11575
|
+
const lookbehind = s.src.slice(Math.max(0, s.pos - 120), s.pos);
|
|
11576
|
+
if (/"[^"\n]{1,80}"\s*:\s*$/.test(lookbehind)) return false;
|
|
11577
|
+
const afterMatch = s.src.slice(s.pos + match[0].length);
|
|
11578
|
+
if (afterMatch.startsWith("](") || afterMatch.startsWith("(") || afterMatch.startsWith("[")) return false;
|
|
11466
11579
|
if (!silent) {
|
|
11467
11580
|
const id = match[1];
|
|
11468
11581
|
const token = s.push("reference", "span", 0);
|