add basic markdown parsing using Marked (#18)
Browse filesCo-authored-by: Eliott C <[email protected]>
- package-lock.json +43 -24
- package.json +2 -0
- src/lib/components/chat/ChatMessage.svelte +2 -1
package-lock.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
| 11 |
"@huggingface/inference": "^2.0.0-rc2",
|
| 12 |
"autoprefixer": "^10.4.14",
|
| 13 |
"date-fns": "^2.29.3",
|
|
|
|
| 14 |
"mongodb": "^5.3.0",
|
| 15 |
"postcss": "^8.4.21",
|
| 16 |
"tailwind-scrollbar": "^3.0.0",
|
|
@@ -19,6 +20,7 @@
|
|
| 19 |
"devDependencies": {
|
| 20 |
"@sveltejs/adapter-node": "^1.2.0",
|
| 21 |
"@sveltejs/kit": "^1.5.0",
|
|
|
|
| 22 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
| 23 |
"@typescript-eslint/parser": "^5.45.0",
|
| 24 |
"eslint": "^8.28.0",
|
|
@@ -723,25 +725,25 @@
|
|
| 723 |
}
|
| 724 |
},
|
| 725 |
"node_modules/@sveltejs/kit": {
|
| 726 |
-
"version": "1.
|
| 727 |
-
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.
|
| 728 |
-
"integrity": "sha512-
|
| 729 |
"dev": true,
|
| 730 |
"hasInstallScript": true,
|
| 731 |
"dependencies": {
|
| 732 |
"@sveltejs/vite-plugin-svelte": "^2.0.0",
|
| 733 |
"@types/cookie": "^0.5.1",
|
| 734 |
"cookie": "^0.5.0",
|
| 735 |
-
"devalue": "^4.3
|
| 736 |
"esm-env": "^1.0.0",
|
| 737 |
"kleur": "^4.1.5",
|
| 738 |
-
"magic-string": "^0.
|
| 739 |
"mime": "^3.0.0",
|
| 740 |
"sade": "^1.8.1",
|
| 741 |
"set-cookie-parser": "^2.5.1",
|
| 742 |
"sirv": "^2.0.2",
|
| 743 |
"tiny-glob": "^0.2.9",
|
| 744 |
-
"undici": "5.
|
| 745 |
},
|
| 746 |
"bin": {
|
| 747 |
"svelte-kit": "svelte-kit.js"
|
|
@@ -805,6 +807,12 @@
|
|
| 805 |
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
|
| 806 |
"dev": true
|
| 807 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 808 |
"node_modules/@types/node": {
|
| 809 |
"version": "18.13.0",
|
| 810 |
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz",
|
|
@@ -2023,18 +2031,6 @@
|
|
| 2023 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 2024 |
}
|
| 2025 |
},
|
| 2026 |
-
"node_modules/globals/node_modules/type-fest": {
|
| 2027 |
-
"version": "0.20.2",
|
| 2028 |
-
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
|
| 2029 |
-
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
|
| 2030 |
-
"dev": true,
|
| 2031 |
-
"engines": {
|
| 2032 |
-
"node": ">=10"
|
| 2033 |
-
},
|
| 2034 |
-
"funding": {
|
| 2035 |
-
"url": "https://github.com/sponsors/sindresorhus"
|
| 2036 |
-
}
|
| 2037 |
-
},
|
| 2038 |
"node_modules/globalyzer": {
|
| 2039 |
"version": "0.1.0",
|
| 2040 |
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
|
|
@@ -2357,9 +2353,9 @@
|
|
| 2357 |
}
|
| 2358 |
},
|
| 2359 |
"node_modules/magic-string": {
|
| 2360 |
-
"version": "0.
|
| 2361 |
-
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.
|
| 2362 |
-
"integrity": "sha512-
|
| 2363 |
"dev": true,
|
| 2364 |
"dependencies": {
|
| 2365 |
"@jridgewell/sourcemap-codec": "^1.4.13"
|
|
@@ -2368,6 +2364,17 @@
|
|
| 2368 |
"node": ">=12"
|
| 2369 |
}
|
| 2370 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2371 |
"node_modules/memory-pager": {
|
| 2372 |
"version": "1.5.0",
|
| 2373 |
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
|
@@ -3586,6 +3593,18 @@
|
|
| 3586 |
"node": ">= 0.8.0"
|
| 3587 |
}
|
| 3588 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3589 |
"node_modules/typescript": {
|
| 3590 |
"version": "4.9.5",
|
| 3591 |
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
|
@@ -3600,9 +3619,9 @@
|
|
| 3600 |
}
|
| 3601 |
},
|
| 3602 |
"node_modules/undici": {
|
| 3603 |
-
"version": "5.
|
| 3604 |
-
"resolved": "https://registry.npmjs.org/undici/-/undici-5.
|
| 3605 |
-
"integrity": "sha512-
|
| 3606 |
"dev": true,
|
| 3607 |
"dependencies": {
|
| 3608 |
"busboy": "^1.6.0"
|
|
|
|
| 11 |
"@huggingface/inference": "^2.0.0-rc2",
|
| 12 |
"autoprefixer": "^10.4.14",
|
| 13 |
"date-fns": "^2.29.3",
|
| 14 |
+
"marked": "^4.3.0",
|
| 15 |
"mongodb": "^5.3.0",
|
| 16 |
"postcss": "^8.4.21",
|
| 17 |
"tailwind-scrollbar": "^3.0.0",
|
|
|
|
| 20 |
"devDependencies": {
|
| 21 |
"@sveltejs/adapter-node": "^1.2.0",
|
| 22 |
"@sveltejs/kit": "^1.5.0",
|
| 23 |
+
"@types/marked": "^4.0.8",
|
| 24 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
| 25 |
"@typescript-eslint/parser": "^5.45.0",
|
| 26 |
"eslint": "^8.28.0",
|
|
|
|
| 725 |
}
|
| 726 |
},
|
| 727 |
"node_modules/@sveltejs/kit": {
|
| 728 |
+
"version": "1.7.1",
|
| 729 |
+
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.7.1.tgz",
|
| 730 |
+
"integrity": "sha512-epaQCaZ/D3Qr/SgrRKHv+MpM6rz8JdaXSjOjas8t7PbDJl88KpqYWUvsmyuJQn/yNNGar23kENyy4NueNnjIKQ==",
|
| 731 |
"dev": true,
|
| 732 |
"hasInstallScript": true,
|
| 733 |
"dependencies": {
|
| 734 |
"@sveltejs/vite-plugin-svelte": "^2.0.0",
|
| 735 |
"@types/cookie": "^0.5.1",
|
| 736 |
"cookie": "^0.5.0",
|
| 737 |
+
"devalue": "^4.2.3",
|
| 738 |
"esm-env": "^1.0.0",
|
| 739 |
"kleur": "^4.1.5",
|
| 740 |
+
"magic-string": "^0.29.0",
|
| 741 |
"mime": "^3.0.0",
|
| 742 |
"sade": "^1.8.1",
|
| 743 |
"set-cookie-parser": "^2.5.1",
|
| 744 |
"sirv": "^2.0.2",
|
| 745 |
"tiny-glob": "^0.2.9",
|
| 746 |
+
"undici": "5.19.1"
|
| 747 |
},
|
| 748 |
"bin": {
|
| 749 |
"svelte-kit": "svelte-kit.js"
|
|
|
|
| 807 |
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
|
| 808 |
"dev": true
|
| 809 |
},
|
| 810 |
+
"node_modules/@types/marked": {
|
| 811 |
+
"version": "4.0.8",
|
| 812 |
+
"resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.8.tgz",
|
| 813 |
+
"integrity": "sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==",
|
| 814 |
+
"dev": true
|
| 815 |
+
},
|
| 816 |
"node_modules/@types/node": {
|
| 817 |
"version": "18.13.0",
|
| 818 |
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz",
|
|
|
|
| 2031 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 2032 |
}
|
| 2033 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2034 |
"node_modules/globalyzer": {
|
| 2035 |
"version": "0.1.0",
|
| 2036 |
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
|
|
|
|
| 2353 |
}
|
| 2354 |
},
|
| 2355 |
"node_modules/magic-string": {
|
| 2356 |
+
"version": "0.29.0",
|
| 2357 |
+
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz",
|
| 2358 |
+
"integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==",
|
| 2359 |
"dev": true,
|
| 2360 |
"dependencies": {
|
| 2361 |
"@jridgewell/sourcemap-codec": "^1.4.13"
|
|
|
|
| 2364 |
"node": ">=12"
|
| 2365 |
}
|
| 2366 |
},
|
| 2367 |
+
"node_modules/marked": {
|
| 2368 |
+
"version": "4.3.0",
|
| 2369 |
+
"resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
|
| 2370 |
+
"integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
|
| 2371 |
+
"bin": {
|
| 2372 |
+
"marked": "bin/marked.js"
|
| 2373 |
+
},
|
| 2374 |
+
"engines": {
|
| 2375 |
+
"node": ">= 12"
|
| 2376 |
+
}
|
| 2377 |
+
},
|
| 2378 |
"node_modules/memory-pager": {
|
| 2379 |
"version": "1.5.0",
|
| 2380 |
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
|
|
|
| 3593 |
"node": ">= 0.8.0"
|
| 3594 |
}
|
| 3595 |
},
|
| 3596 |
+
"node_modules/type-fest": {
|
| 3597 |
+
"version": "0.20.2",
|
| 3598 |
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
|
| 3599 |
+
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
|
| 3600 |
+
"dev": true,
|
| 3601 |
+
"engines": {
|
| 3602 |
+
"node": ">=10"
|
| 3603 |
+
},
|
| 3604 |
+
"funding": {
|
| 3605 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 3606 |
+
}
|
| 3607 |
+
},
|
| 3608 |
"node_modules/typescript": {
|
| 3609 |
"version": "4.9.5",
|
| 3610 |
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
|
|
|
| 3619 |
}
|
| 3620 |
},
|
| 3621 |
"node_modules/undici": {
|
| 3622 |
+
"version": "5.19.1",
|
| 3623 |
+
"resolved": "https://registry.npmjs.org/undici/-/undici-5.19.1.tgz",
|
| 3624 |
+
"integrity": "sha512-YiZ61LPIgY73E7syxCDxxa3LV2yl3sN8spnIuTct60boiiRaE1J8mNWHO8Im2Zi/sFrPusjLlmRPrsyraSqX6A==",
|
| 3625 |
"dev": true,
|
| 3626 |
"dependencies": {
|
| 3627 |
"busboy": "^1.6.0"
|
package.json
CHANGED
|
@@ -14,6 +14,7 @@
|
|
| 14 |
"devDependencies": {
|
| 15 |
"@sveltejs/adapter-node": "^1.2.0",
|
| 16 |
"@sveltejs/kit": "^1.5.0",
|
|
|
|
| 17 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
| 18 |
"@typescript-eslint/parser": "^5.45.0",
|
| 19 |
"eslint": "^8.28.0",
|
|
@@ -32,6 +33,7 @@
|
|
| 32 |
"@huggingface/inference": "^2.0.0-rc2",
|
| 33 |
"autoprefixer": "^10.4.14",
|
| 34 |
"date-fns": "^2.29.3",
|
|
|
|
| 35 |
"mongodb": "^5.3.0",
|
| 36 |
"postcss": "^8.4.21",
|
| 37 |
"tailwind-scrollbar": "^3.0.0",
|
|
|
|
| 14 |
"devDependencies": {
|
| 15 |
"@sveltejs/adapter-node": "^1.2.0",
|
| 16 |
"@sveltejs/kit": "^1.5.0",
|
| 17 |
+
"@types/marked": "^4.0.8",
|
| 18 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
| 19 |
"@typescript-eslint/parser": "^5.45.0",
|
| 20 |
"eslint": "^8.28.0",
|
|
|
|
| 33 |
"@huggingface/inference": "^2.0.0-rc2",
|
| 34 |
"autoprefixer": "^10.4.14",
|
| 35 |
"date-fns": "^2.29.3",
|
| 36 |
+
"marked": "^4.3.0",
|
| 37 |
"mongodb": "^5.3.0",
|
| 38 |
"postcss": "^8.4.21",
|
| 39 |
"tailwind-scrollbar": "^3.0.0",
|
src/lib/components/chat/ChatMessage.svelte
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
<script lang="ts">
|
|
|
|
| 2 |
import type { Message } from '$lib/types/Message';
|
| 3 |
|
| 4 |
export let message: Message;
|
|
@@ -14,7 +15,7 @@
|
|
| 14 |
<div
|
| 15 |
class="group relative rounded-2xl px-5 py-3.5 border border-gray-100 bg-gradient-to-br from-gray-50 dark:from-gray-800/40 dark:border-gray-800"
|
| 16 |
>
|
| 17 |
-
{message.content}
|
| 18 |
</div>
|
| 19 |
</div>
|
| 20 |
{/if}
|
|
|
|
| 1 |
<script lang="ts">
|
| 2 |
+
import { marked } from 'marked';
|
| 3 |
import type { Message } from '$lib/types/Message';
|
| 4 |
|
| 5 |
export let message: Message;
|
|
|
|
| 15 |
<div
|
| 16 |
class="group relative rounded-2xl px-5 py-3.5 border border-gray-100 bg-gradient-to-br from-gray-50 dark:from-gray-800/40 dark:border-gray-800"
|
| 17 |
>
|
| 18 |
+
{@html marked(message.content, { gfm: true })}
|
| 19 |
</div>
|
| 20 |
</div>
|
| 21 |
{/if}
|