Skip to content

Commit fdb580b

Browse files
authored
fix(types): export LanguageType utility type (#374)
Fixes #373
1 parent 3a56592 commit fdb580b

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,22 @@ Refer to the highlight.js [language definition guide](https://highlightjs.readth
334334
<Highlight {language} code="..." />
335335
```
336336

337+
If you're using TypeScript, use the `LanguageType` interface to type the language.
338+
339+
```ts
340+
import type { LanguageType } from "svelte-highlight";
341+
342+
const language: LanguageType<"custom-language"> = {
343+
name: "custom-language",
344+
register: (hljs) => {
345+
return {
346+
/** custom language rules */
347+
contains: [],
348+
};
349+
},
350+
};
351+
```
352+
337353
## Custom Plugin
338354

339355
Additional plugin languages can be installed and used separately.

src/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export { default as Highlight, default as default } from "./Highlight.svelte";
22
export { default as HighlightAuto } from "./HighlightAuto.svelte";
33
export { default as HighlightSvelte } from "./HighlightSvelte.svelte";
44
export { default as LineNumbers } from "./LineNumbers.svelte";
5+
export type { LanguageType } from "./languages";

tests/languages.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as languages from "../src/languages";
2+
import type { LanguageType } from "svelte-highlight";
23

34
test("Languages", () => {
45
const languageNames = Object.keys(languages);
@@ -8,3 +9,21 @@ test("Languages", () => {
89
expect(languageNames.length).toEqual(192);
910
expect(languageNames).toMatchSnapshot();
1011
});
12+
13+
test("LanguageType", () => {
14+
const language: LanguageType<"custom-language"> = {
15+
name: "custom-language",
16+
register: () => {
17+
return {
18+
contains: [],
19+
tokenize: () => {
20+
return {
21+
tokens: [],
22+
};
23+
},
24+
};
25+
},
26+
};
27+
28+
expect(language).toBeTruthy();
29+
});

0 commit comments

Comments
 (0)