stream-markdown-parser 0.0.15 → 0.0.17
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 +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +97 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Token } from "markdown-it-ts";
|
|
1
|
+
import { MarkdownIt as MarkdownIt$1, Token } from "markdown-it-ts";
|
|
3
2
|
|
|
4
3
|
//#region src/factory.d.ts
|
|
5
4
|
interface FactoryOptions extends Record<string, unknown> {
|
|
@@ -36,6 +35,11 @@ interface ParagraphNode extends BaseNode {
|
|
|
36
35
|
children: ParsedNode[];
|
|
37
36
|
maybeCheckbox?: boolean;
|
|
38
37
|
}
|
|
38
|
+
interface InlineNode extends BaseNode {
|
|
39
|
+
type: 'inline';
|
|
40
|
+
children: ParsedNode[];
|
|
41
|
+
content?: string;
|
|
42
|
+
}
|
|
39
43
|
interface ListNode extends BaseNode {
|
|
40
44
|
type: 'list';
|
|
41
45
|
ordered: boolean;
|
|
@@ -60,8 +64,14 @@ interface CodeBlockNode extends BaseNode {
|
|
|
60
64
|
}
|
|
61
65
|
interface HtmlBlockNode extends BaseNode {
|
|
62
66
|
type: 'html_block';
|
|
67
|
+
tag: string;
|
|
63
68
|
content: string;
|
|
64
69
|
}
|
|
70
|
+
interface HtmlInlineNode extends BaseNode {
|
|
71
|
+
type: 'html_inline';
|
|
72
|
+
content: string;
|
|
73
|
+
children: ParsedNode[];
|
|
74
|
+
}
|
|
65
75
|
interface InlineCodeNode extends BaseNode {
|
|
66
76
|
type: 'inline_code';
|
|
67
77
|
code: string;
|
|
@@ -260,7 +270,7 @@ type PostTransformNodesHook = (nodes: ParsedNode[]) => ParsedNode[];
|
|
|
260
270
|
declare function parseInlineTokens(tokens: MarkdownToken[], raw?: string, pPreToken?: MarkdownToken): ParsedNode[];
|
|
261
271
|
//#endregion
|
|
262
272
|
//#region src/parser/index.d.ts
|
|
263
|
-
declare function parseMarkdownToStructure(markdown: string, md: MarkdownIt, options?: ParseOptions): ParsedNode[];
|
|
273
|
+
declare function parseMarkdownToStructure(markdown: string, md: MarkdownIt$1, options?: ParseOptions): ParsedNode[];
|
|
264
274
|
declare function processTokens(tokens: MarkdownToken[]): ParsedNode[];
|
|
265
275
|
//#endregion
|
|
266
276
|
//#region src/config.d.ts
|
|
@@ -288,7 +298,7 @@ declare function findMatchingClose(src: string, startIdx: number, open: string,
|
|
|
288
298
|
declare function parseFenceToken(token: MarkdownToken): CodeBlockNode;
|
|
289
299
|
//#endregion
|
|
290
300
|
//#region src/plugins/containers.d.ts
|
|
291
|
-
declare function applyContainers(md: MarkdownIt): void;
|
|
301
|
+
declare function applyContainers(md: MarkdownIt$1): void;
|
|
292
302
|
//#endregion
|
|
293
303
|
//#region src/plugins/isMathLike.d.ts
|
|
294
304
|
declare const TEX_BRACE_COMMANDS: string[];
|
|
@@ -298,19 +308,19 @@ declare function isMathLike(s: string): boolean;
|
|
|
298
308
|
//#region src/plugins/math.d.ts
|
|
299
309
|
declare const KATEX_COMMANDS: string[];
|
|
300
310
|
declare function normalizeStandaloneBackslashT(s: string, opts?: MathOptions): string;
|
|
301
|
-
declare function applyMath(md: MarkdownIt, mathOpts?: MathOptions): void;
|
|
311
|
+
declare function applyMath(md: MarkdownIt$1, mathOpts?: MathOptions): void;
|
|
302
312
|
//#endregion
|
|
303
313
|
//#region src/index.d.ts
|
|
304
314
|
interface GetMarkdownOptions extends FactoryOptions {
|
|
305
315
|
plugin?: Array<unknown>;
|
|
306
|
-
apply?: Array<(md: MarkdownIt) => void>;
|
|
316
|
+
apply?: Array<(md: MarkdownIt$1) => void>;
|
|
307
317
|
/**
|
|
308
318
|
* Custom translation function or translation map for UI texts
|
|
309
319
|
* @default { 'common.copy': 'Copy' }
|
|
310
320
|
*/
|
|
311
321
|
i18n?: ((key: string) => string) | Record<string, string>;
|
|
312
322
|
}
|
|
313
|
-
declare function getMarkdown(msgId?: string, options?: GetMarkdownOptions):
|
|
323
|
+
declare function getMarkdown(msgId?: string, options?: GetMarkdownOptions): MarkdownIt$1;
|
|
314
324
|
//#endregion
|
|
315
|
-
export { AdmonitionNode, BaseNode, BlockquoteNode, CheckboxInputNode, CheckboxNode, CodeBlockNode, CustomComponents, DefinitionItemNode, DefinitionListNode, ESCAPED_TEX_BRACE_COMMANDS, EmojiNode, EmphasisNode, FootnoteNode, FootnoteReferenceNode, GetMarkdownOptions, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, ImageNode, InlineCodeNode, InsertNode, KATEX_COMMANDS, LinkNode, ListItemNode, ListNode, MarkdownRender, MarkdownToken, MarkdownTokenLite, MathBlockNode, MathInlineNode, type MathOptions, MermaidBlockNode, ParagraphNode, ParseOptions, ParsedNode, PostTransformNodesHook, ReferenceNode, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TEX_BRACE_COMMANDS, TableCellNode, TableNode, TableRowNode, TextNode, ThematicBreakNode, TransformTokensHook, applyContainers, applyMath, findMatchingClose, getMarkdown, isMathLike, normalizeStandaloneBackslashT, parseFenceToken, parseInlineTokens, parseMarkdownToStructure, processTokens, setDefaultMathOptions };
|
|
325
|
+
export { AdmonitionNode, BaseNode, BlockquoteNode, CheckboxInputNode, CheckboxNode, CodeBlockNode, CustomComponents, DefinitionItemNode, DefinitionListNode, ESCAPED_TEX_BRACE_COMMANDS, EmojiNode, EmphasisNode, FootnoteNode, FootnoteReferenceNode, GetMarkdownOptions, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, ImageNode, InlineCodeNode, InlineNode, InsertNode, KATEX_COMMANDS, LinkNode, ListItemNode, ListNode, MarkdownRender, MarkdownToken, MarkdownTokenLite, MathBlockNode, MathInlineNode, type MathOptions, MermaidBlockNode, ParagraphNode, ParseOptions, ParsedNode, PostTransformNodesHook, ReferenceNode, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TEX_BRACE_COMMANDS, TableCellNode, TableNode, TableRowNode, TextNode, ThematicBreakNode, TransformTokensHook, applyContainers, applyMath, findMatchingClose, getMarkdown, isMathLike, normalizeStandaloneBackslashT, parseFenceToken, parseInlineTokens, parseMarkdownToStructure, processTokens, setDefaultMathOptions };
|
|
316
326
|
//# sourceMappingURL=index.d.ts.map
|
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":"
|
|
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
|
@@ -75,6 +75,61 @@ function applyContainers(md) {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/plugins/fixHtmlInline.ts
|
|
80
|
+
function applyFixHtmlInlineTokens(md) {
|
|
81
|
+
md.core.ruler.push("fix_html_inline_tokens", (state) => {
|
|
82
|
+
const toks = state.tokens ?? [];
|
|
83
|
+
const VOID_TAGS = new Set([
|
|
84
|
+
"area",
|
|
85
|
+
"base",
|
|
86
|
+
"br",
|
|
87
|
+
"col",
|
|
88
|
+
"embed",
|
|
89
|
+
"hr",
|
|
90
|
+
"img",
|
|
91
|
+
"input",
|
|
92
|
+
"link",
|
|
93
|
+
"meta",
|
|
94
|
+
"param",
|
|
95
|
+
"source",
|
|
96
|
+
"track",
|
|
97
|
+
"wbr"
|
|
98
|
+
]);
|
|
99
|
+
for (let i = 0; i < toks.length; i++) {
|
|
100
|
+
const t = toks[i];
|
|
101
|
+
if (!t || t.type !== "inline") continue;
|
|
102
|
+
if (/\s*<$/.test(t.content)) {
|
|
103
|
+
t.children.length = 0;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (t.children.length === 2 && t.children[0].type === "html_inline") {
|
|
107
|
+
t.children = [{
|
|
108
|
+
type: "html_block",
|
|
109
|
+
content: t.children[0].content + t.children[1].content,
|
|
110
|
+
tag: t.children[0].content.match(/<([^\s>/]+)/)?.[1] ?? "",
|
|
111
|
+
loading: true
|
|
112
|
+
}];
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (!t.content?.startsWith("<") || t.children?.length !== 1) continue;
|
|
116
|
+
const raw = String(t.content);
|
|
117
|
+
const tagName = raw.match(/<([^\s>/]+)/)?.[1]?.toLowerCase() ?? "";
|
|
118
|
+
if (!tagName) continue;
|
|
119
|
+
const isVoid = /\/\s*>\s*$/.test(raw) || VOID_TAGS.has(tagName);
|
|
120
|
+
const htmlToken = t;
|
|
121
|
+
if (isVoid) {
|
|
122
|
+
htmlToken.children = [{
|
|
123
|
+
type: "html_inline",
|
|
124
|
+
content: raw
|
|
125
|
+
}];
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
htmlToken.children.length = 0;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
78
133
|
//#endregion
|
|
79
134
|
//#region src/plugins/fixLinkInline.ts
|
|
80
135
|
function applyFixLinkInline(md) {
|
|
@@ -972,6 +1027,7 @@ function factory(opts = {}) {
|
|
|
972
1027
|
html: true,
|
|
973
1028
|
linkify: true,
|
|
974
1029
|
typographer: true,
|
|
1030
|
+
stream: true,
|
|
975
1031
|
...opts.markdownItOptions ?? {}
|
|
976
1032
|
});
|
|
977
1033
|
if (opts.enableMath ?? true) applyMath(md, {
|
|
@@ -985,6 +1041,7 @@ function factory(opts = {}) {
|
|
|
985
1041
|
applyFixListItem(md);
|
|
986
1042
|
applyFixTableTokens(md);
|
|
987
1043
|
applyRenderRules(md);
|
|
1044
|
+
applyFixHtmlInlineTokens(md);
|
|
988
1045
|
return md;
|
|
989
1046
|
}
|
|
990
1047
|
|
|
@@ -2524,12 +2581,49 @@ function parseHardBreak() {
|
|
|
2524
2581
|
//#endregion
|
|
2525
2582
|
//#region src/parser/node-parsers/html-block-parser.ts
|
|
2526
2583
|
function parseHtmlBlock(token) {
|
|
2527
|
-
|
|
2584
|
+
const raw = String(token.content ?? "");
|
|
2585
|
+
if (/^\s*<!--/.test(raw) || /^\s*<!/.test(raw) || /^\s*<\?/.test(raw)) return {
|
|
2528
2586
|
type: "html_block",
|
|
2529
|
-
content:
|
|
2530
|
-
raw
|
|
2587
|
+
content: raw,
|
|
2588
|
+
raw,
|
|
2589
|
+
tag: "",
|
|
2590
|
+
loading: false
|
|
2591
|
+
};
|
|
2592
|
+
const tag = (raw.match(/^\s*<([A-Z][\w:-]*)/i)?.[1] || "").toLowerCase();
|
|
2593
|
+
if (!tag) return {
|
|
2594
|
+
type: "html_block",
|
|
2595
|
+
content: raw,
|
|
2596
|
+
raw,
|
|
2597
|
+
tag: "",
|
|
2531
2598
|
loading: false
|
|
2532
2599
|
};
|
|
2600
|
+
const VOID_TAGS = new Set([
|
|
2601
|
+
"area",
|
|
2602
|
+
"base",
|
|
2603
|
+
"br",
|
|
2604
|
+
"col",
|
|
2605
|
+
"embed",
|
|
2606
|
+
"hr",
|
|
2607
|
+
"img",
|
|
2608
|
+
"input",
|
|
2609
|
+
"link",
|
|
2610
|
+
"meta",
|
|
2611
|
+
"param",
|
|
2612
|
+
"source",
|
|
2613
|
+
"track",
|
|
2614
|
+
"wbr"
|
|
2615
|
+
]);
|
|
2616
|
+
const selfClosing = /^\s*<[^>]*\/\s*>/.test(raw);
|
|
2617
|
+
const isVoid = VOID_TAGS.has(tag);
|
|
2618
|
+
const hasClosing = new RegExp(`<\\/\\s*${tag}\\b`, "i").test(raw);
|
|
2619
|
+
const loading = !(isVoid || selfClosing || hasClosing);
|
|
2620
|
+
return {
|
|
2621
|
+
type: "html_block",
|
|
2622
|
+
content: loading ? `${raw.replace(/<[^>]*$/, "")}\n</${tag}>` : raw,
|
|
2623
|
+
raw,
|
|
2624
|
+
tag,
|
|
2625
|
+
loading
|
|
2626
|
+
};
|
|
2533
2627
|
}
|
|
2534
2628
|
|
|
2535
2629
|
//#endregion
|