Use highlight.js (#15)
Browse files- .github/workflows/deploy-to-spaces.yml +1 -1
- package.json +1 -0
- pnpm-lock.yaml +8 -0
- src/app.css +1 -0
- src/lib/components/CodeSnippets.svelte +22 -4
.github/workflows/deploy-to-spaces.yml
CHANGED
@@ -17,4 +17,4 @@ jobs:
|
|
17 |
- name: Push to hub
|
18 |
env:
|
19 |
HF_DEPLOYMENT_TOKEN: ${{ secrets.HF_DEPLOYMENT_TOKEN }}
|
20 |
-
run: git push https://mishig:$HF_DEPLOYMENT_TOKEN@huggingface.co/spaces/huggingface-projects/inference-playground main
|
|
|
17 |
- name: Push to hub
|
18 |
env:
|
19 |
HF_DEPLOYMENT_TOKEN: ${{ secrets.HF_DEPLOYMENT_TOKEN }}
|
20 |
+
run: git push https://mishig:$HF_DEPLOYMENT_TOKEN@huggingface.co/spaces/huggingface-projects/inference-playground main
|
package.json
CHANGED
@@ -17,6 +17,7 @@
|
|
17 |
"@sveltejs/kit": "^2.0.0",
|
18 |
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
19 |
"autoprefixer": "^10.4.19",
|
|
|
20 |
"postcss": "^8.4.38",
|
21 |
"prettier": "^3.1.1",
|
22 |
"prettier-plugin-svelte": "^3.1.2",
|
|
|
17 |
"@sveltejs/kit": "^2.0.0",
|
18 |
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
19 |
"autoprefixer": "^10.4.19",
|
20 |
+
"highlight.js": "^11.10.0",
|
21 |
"postcss": "^8.4.38",
|
22 |
"prettier": "^3.1.1",
|
23 |
"prettier-plugin-svelte": "^3.1.2",
|
pnpm-lock.yaml
CHANGED
@@ -34,6 +34,9 @@ devDependencies:
|
|
34 |
autoprefixer:
|
35 |
specifier: ^10.4.19
|
36 |
version: 10.4.19(postcss@8.4.38)
|
|
|
|
|
|
|
37 |
postcss:
|
38 |
specifier: ^8.4.38
|
39 |
version: 8.4.38
|
@@ -1067,6 +1070,11 @@ packages:
|
|
1067 |
dependencies:
|
1068 |
function-bind: 1.1.2
|
1069 |
|
|
|
|
|
|
|
|
|
|
|
1070 |
/import-meta-resolve@4.1.0:
|
1071 |
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
|
1072 |
dev: true
|
|
|
34 |
autoprefixer:
|
35 |
specifier: ^10.4.19
|
36 |
version: 10.4.19(postcss@8.4.38)
|
37 |
+
highlight.js:
|
38 |
+
specifier: ^11.10.0
|
39 |
+
version: 11.10.0
|
40 |
postcss:
|
41 |
specifier: ^8.4.38
|
42 |
version: 8.4.38
|
|
|
1070 |
dependencies:
|
1071 |
function-bind: 1.1.2
|
1072 |
|
1073 |
+
/highlight.js@11.10.0:
|
1074 |
+
resolution: {integrity: sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==}
|
1075 |
+
engines: {node: '>=12.0.0'}
|
1076 |
+
dev: true
|
1077 |
+
|
1078 |
/import-meta-resolve@4.1.0:
|
1079 |
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
|
1080 |
dev: true
|
src/app.css
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
@tailwind base;
|
2 |
@tailwind components;
|
3 |
@tailwind utilities;
|
|
|
1 |
+
@import 'highlight.js/styles/atom-one-light';
|
2 |
@tailwind base;
|
3 |
@tailwind components;
|
4 |
@tailwind utilities;
|
src/lib/components/CodeSnippets.svelte
CHANGED
@@ -1,5 +1,9 @@
|
|
1 |
<script lang="ts">
|
2 |
import { type ChatCompletionInputMessage } from '@huggingface/tasks';
|
|
|
|
|
|
|
|
|
3 |
|
4 |
export let model: string;
|
5 |
export let streaming: Boolean;
|
@@ -7,6 +11,16 @@
|
|
7 |
export let maxTokens: number;
|
8 |
export let messages: ChatCompletionInputMessage[];
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
const npmSnippet = `import { HfInference } from '@huggingface/inference'
|
11 |
|
12 |
const hf = new HfInference('your access token')`;
|
@@ -64,15 +78,19 @@ for await (const chunk of hf.chatCompletionStream({
|
|
64 |
<h2 class="font-semibold">Install and instantiate</h2>
|
65 |
</div>
|
66 |
<pre
|
67 |
-
class="overflow-x-auto rounded-lg border border-gray-200/80 bg-white px-4 py-6 text-sm shadow-sm dark:border-gray-800 dark:bg-gray-800/50">{
|
|
|
|
|
|
|
68 |
|
69 |
<div class="px-4 pb-4 pt-6">
|
70 |
<h2 class="font-semibold">{streaming ? 'Streaming API' : 'Non-Streaming API'}</h2>
|
71 |
</div>
|
72 |
|
73 |
<pre
|
74 |
-
class="overflow-x-auto rounded-lg border border-gray-200/80 bg-white px-4 py-6 text-sm shadow-sm dark:border-gray-800 dark:bg-gray-800/50">{
|
75 |
-
? streamingSnippet
|
76 |
-
|
|
|
77 |
</pre>
|
78 |
</div>
|
|
|
1 |
<script lang="ts">
|
2 |
import { type ChatCompletionInputMessage } from '@huggingface/tasks';
|
3 |
+
import hljs from 'highlight.js/lib/core';
|
4 |
+
import javascript from 'highlight.js/lib/languages/javascript';
|
5 |
+
import python from 'highlight.js/lib/languages/python';
|
6 |
+
import bash from 'highlight.js/lib/languages/bash';
|
7 |
|
8 |
export let model: string;
|
9 |
export let streaming: Boolean;
|
|
|
11 |
export let maxTokens: number;
|
12 |
export let messages: ChatCompletionInputMessage[];
|
13 |
|
14 |
+
type Langauge = 'javascript' | 'python' | 'bash';
|
15 |
+
|
16 |
+
hljs.registerLanguage('javascript', javascript);
|
17 |
+
hljs.registerLanguage('python', python);
|
18 |
+
hljs.registerLanguage('bash', bash);
|
19 |
+
|
20 |
+
function highlight(code: string, language: Langauge) {
|
21 |
+
return hljs.highlight(code, { language }).value;
|
22 |
+
}
|
23 |
+
|
24 |
const npmSnippet = `import { HfInference } from '@huggingface/inference'
|
25 |
|
26 |
const hf = new HfInference('your access token')`;
|
|
|
78 |
<h2 class="font-semibold">Install and instantiate</h2>
|
79 |
</div>
|
80 |
<pre
|
81 |
+
class="overflow-x-auto rounded-lg border border-gray-200/80 bg-white px-4 py-6 text-sm shadow-sm dark:border-gray-800 dark:bg-gray-800/50">{@html highlight(
|
82 |
+
npmSnippet,
|
83 |
+
'javascript'
|
84 |
+
)}</pre>
|
85 |
|
86 |
<div class="px-4 pb-4 pt-6">
|
87 |
<h2 class="font-semibold">{streaming ? 'Streaming API' : 'Non-Streaming API'}</h2>
|
88 |
</div>
|
89 |
|
90 |
<pre
|
91 |
+
class="overflow-x-auto rounded-lg border border-gray-200/80 bg-white px-4 py-6 text-sm shadow-sm dark:border-gray-800 dark:bg-gray-800/50">{@html highlight(
|
92 |
+
streaming ? streamingSnippet : nonStreamingSnippet,
|
93 |
+
'javascript'
|
94 |
+
)}
|
95 |
</pre>
|
96 |
</div>
|