Skip to content

Commit ab05eff

Browse files
committed
perf: move marked.use() calls to a singleton config module
1 parent 3125dea commit ab05eff

2 files changed

Lines changed: 29 additions & 26 deletions

File tree

src/lib/components/chat/Messages/Markdown.svelte

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
<script>
22
import { onDestroy } from 'svelte';
3-
import { marked } from 'marked';
3+
import { marked } from '$lib/utils/marked/config';
44
import { replaceTokens, processResponseContent } from '$lib/utils';
55
import { user } from '$lib/stores';
66
7-
import markedExtension from '$lib/utils/marked/extension';
8-
import markedKatexExtension from '$lib/utils/marked/katex-extension';
9-
import { disableSingleTilde } from '$lib/utils/marked/strikethrough-extension';
10-
import { mentionExtension } from '$lib/utils/marked/mention-extension';
11-
127
import MarkdownTokens from './Markdown/MarkdownTokens.svelte';
13-
import footnoteExtension from '$lib/utils/marked/footnote-extension';
14-
import citationExtension from '$lib/utils/marked/citation-extension';
158
169
export let id = '';
1710
export let content;
@@ -37,24 +30,6 @@
3730
let tokens = [];
3831
let pendingUpdate = null;
3932
40-
const options = {
41-
throwOnError: false,
42-
breaks: true
43-
};
44-
45-
marked.use(markedKatexExtension(options));
46-
marked.use(markedExtension(options));
47-
marked.use(citationExtension(options));
48-
marked.use(footnoteExtension(options));
49-
marked.use(disableSingleTilde);
50-
marked.use({
51-
extensions: [
52-
mentionExtension({ triggerChar: '@' }),
53-
mentionExtension({ triggerChar: '#' }),
54-
mentionExtension({ triggerChar: '$' })
55-
]
56-
});
57-
5833
const parseTokens = () => {
5934
tokens = marked.lexer(replaceTokens(processResponseContent(content), model?.name, $user?.name));
6035
};

src/lib/utils/marked/config.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { marked } from 'marked';
2+
3+
import markedExtension from './extension';
4+
import markedKatexExtension from './katex-extension';
5+
import { disableSingleTilde } from './strikethrough-extension';
6+
import { mentionExtension } from './mention-extension';
7+
import footnoteExtension from './footnote-extension';
8+
import citationExtension from './citation-extension';
9+
10+
const options = {
11+
throwOnError: false,
12+
breaks: true
13+
};
14+
15+
marked.use(markedKatexExtension(options));
16+
marked.use(markedExtension(options));
17+
marked.use(citationExtension());
18+
marked.use(footnoteExtension());
19+
marked.use(disableSingleTilde);
20+
marked.use({
21+
extensions: [
22+
mentionExtension({ triggerChar: '@' }),
23+
mentionExtension({ triggerChar: '#' }),
24+
mentionExtension({ triggerChar: '$' })
25+
]
26+
});
27+
28+
export { marked };

0 commit comments

Comments
 (0)