Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit d715314

Browse files
committed
chore: moved type definitions highlighting to server + removed unusued deps
1 parent d84c8a7 commit d715314

File tree

9 files changed

+256
-2498
lines changed

9 files changed

+256
-2498
lines changed

docs/package-lock.json

Lines changed: 206 additions & 2393 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/package.json

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@
2929
"@eslint/compat": "^1.2.3",
3030
"@sveltejs/adapter-static": "^3.0.8",
3131
"@sveltejs/kit": "^2.9.0",
32-
"@sveltejs/package": "^2.0.0",
3332
"@sveltejs/vite-plugin-svelte": "^5.0.0",
33+
"@types/node": "^22.10.2",
34+
"@types/remark-heading-id": "^1.0.0",
3435
"autoprefixer": "^10.4.20",
3536
"eslint": "^9.7.0",
3637
"eslint-config-prettier": "^9.1.0",
@@ -40,33 +41,22 @@
4041
"prettier": "^3.4.2",
4142
"prettier-plugin-svelte": "^3.2.6",
4243
"prettier-plugin-tailwindcss": "^0.6.9",
43-
"publint": "^0.2.0",
44-
"svelte": "^5.0.0",
45-
"svelte-check": "^4.0.0",
44+
"svelte": "^5.20.2",
4645
"tailwindcss": "^3.4.16",
4746
"typescript": "^5.0.0",
4847
"typescript-eslint": "^8.0.0",
49-
"vite": "^6.1.0",
50-
"vitest": "^2.1.9"
48+
"vite": "^6.1.0"
5149
},
5250
"dependencies": {
53-
"@tabler/icons-svelte": "^3.26.0",
54-
"@types/node": "^22.10.2",
55-
"@types/remark-heading-id": "^1.0.0",
5651
"@vcarl/remark-headings": "^0.1.0",
57-
"clsx": "^2.1.1",
58-
"front-matter": "^4.0.2",
5952
"gray-matter": "^4.0.3",
6053
"rehype-external-links": "^3.0.0",
6154
"rehype-pretty-code": "^0.14.0",
6255
"rehype-stringify": "^10.0.1",
63-
"remark-frontmatter": "^5.0.0",
64-
"remark-gfm": "^4.0.0",
6556
"remark-github-blockquote-alert": "^1.3.0",
6657
"remark-heading-id": "^1.0.1",
6758
"remark-parse": "^11.0.0",
6859
"remark-rehype": "^11.1.1",
69-
"shiki": "^1.24.4",
7060
"tailwind-merge": "^2.5.5",
7161
"unified": "^11.0.5"
7262
},

docs/src/lib/utils/markdown.server.ts

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,44 @@ async function convertMarkdownContentToHTML(
9191
};
9292
}
9393

94+
type ConvertMarkdownFileToHTMLOptions = {
95+
/**
96+
* If given, will inject type definitions at the end of the markdown content.
97+
* @note It will raise an error if the file does not exist.
98+
*/
99+
typeDefinitionsPath?: string;
100+
};
101+
94102
export async function convertMarkdownFileToHTML<T extends Attributes>(
95-
filePath: string
103+
filePath: string,
104+
options: ConvertMarkdownFileToHTMLOptions = {}
96105
): Promise<MarkdownReturn<T>> {
106+
const { typeDefinitionsPath } = options;
107+
97108
const content = await fs.readFile(filePath, 'utf-8');
98109

99110
try {
100-
const { attributes, body } = extractDataFromMarkdown<T>(content);
101-
const markdownContent = await convertMarkdownContentToHTML(body);
111+
// eslint-disable-next-line prefer-const
112+
let { attributes, body } = extractDataFromMarkdown<T>(content);
113+
114+
if (typeDefinitionsPath) {
115+
const typeDefinitions = await fs.readFile(typeDefinitionsPath, 'utf8');
116+
117+
body += `
118+
## Type Definitions
119+
120+
<details open>
121+
<summary>Show Type Definitions</summary>
122+
123+
\`\`\`typescript
124+
${typeDefinitions}\`\`\`
125+
126+
</details>`;
127+
}
128+
129+
const data = await convertMarkdownContentToHTML(body);
102130

103-
return { attributes, ...markdownContent };
131+
return { attributes, ...data };
104132
} catch (error) {
105133
throw new Error(`Error converting ${filePath} to HTML: ${(error as Error).message}`);
106134
}

docs/src/lib/utils/paths.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export const GUIDE_DIRECTORY = './content/docs/guide';
22
export const CORE_DIRECTORY = './content/docs/core';
3+
export const DIST_CORE_DIRECTORY = '../packages/core/dist';

docs/src/lib/utils/type-definitions.server.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

docs/src/lib/utils/type-definitions.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { convertMarkdownFileToHTML } from '$lib/utils/markdown.server.js';
2-
import { CORE_DIRECTORY } from '$utils/paths.js';
3-
import { getTypeDefinitions } from '$utils/type-definitions.server.js';
2+
import { CORE_DIRECTORY, DIST_CORE_DIRECTORY } from '$utils/paths.js';
43
import type { PageServerLoad } from './$types.js';
54

65
export const load: PageServerLoad = async ({ params }) => {
76
const data = await convertMarkdownFileToHTML<{ category: string }>(
8-
`${CORE_DIRECTORY}/${params.utility}/index.md`
7+
`${CORE_DIRECTORY}/${params.utility}/index.md`,
8+
{
9+
typeDefinitionsPath: `${DIST_CORE_DIRECTORY}/${params.utility}/index.svelte.d.ts`
10+
}
911
);
1012

1113
return {
12-
...data,
13-
typeDefinitions: await getTypeDefinitions(params.utility)
14+
...data
1415
};
1516
};

docs/src/routes/docs/core/[utility]/+page.svelte

Lines changed: 6 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,16 @@
33
import { onThisPageHeadings } from '$lib/contexts/navigation.svelte.js';
44
import { theme } from '$lib/contexts/theme.svelte.js';
55
import { toTitleCase } from '$utils/text-transform.js';
6-
import { getHighlighter } from '$utils/type-definitions.js';
76
87
let { data } = $props();
98
10-
let themeStyle = $derived(theme.current === 'light' ? 'one-light' : 'one-dark-pro');
11-
129
$effect(() => {
1310
const headings = data.headings;
1411
1512
if (data.Component) {
1613
headings.unshift({ depth: 2, value: 'Demo', data: { id: 'demo' } });
1714
}
1815
19-
headings.push({ depth: 2, value: 'Type definitions', data: { id: 'type-definitions' } });
2016
headings.push({ depth: 2, value: 'Sources', data: { id: 'sources' } });
2117
2218
onThisPageHeadings.current = headings;
@@ -53,21 +49,6 @@
5349
<div class="content contents">
5450
{@html data.html}
5551
</div>
56-
<details id="type-definitions-container" class="relative flex w-full flex-col items-start gap-5">
57-
<summary
58-
id="type-definitions"
59-
class="scroll-mt-12 py-5 text-2xl font-semibold lg:scroll-mt-16 dark:text-zinc-200"
60-
>
61-
Type definitions
62-
</summary>
63-
{#await getHighlighter() then highlighter}
64-
{@const styled = highlighter.codeToHtml(data.typeDefinitions, {
65-
lang: 'typescript',
66-
theme: themeStyle
67-
})}
68-
{@html styled}
69-
{/await}
70-
</details>
7152
<h2
7253
id="sources"
7354
class="scroll-mt-12 py-5 text-2xl font-semibold lg:scroll-mt-16 dark:text-zinc-200"
@@ -168,49 +149,26 @@
168149
margin-bottom: 1.25rem;
169150
}
170151
171-
/* https://stackoverflow.com/a/79221450/20892950 */
172-
#type-definitions-container[open]::details-content {
173-
display: contents;
174-
}
175-
176-
#type-definitions-container pre {
177-
position: relative;
178-
width: 100%;
179-
padding: 20px;
180-
overflow: auto;
181-
border-radius: 0.5rem;
182-
counter-reset: line;
183-
}
184-
185-
#type-definitions-container pre code {
186-
overflow: auto;
187-
counter-reset: line;
188-
}
189-
190152
.content figure pre code {
191153
overflow: auto;
192154
border-radius: 0.5rem;
193155
padding: 20px 0;
194156
counter-reset: line;
195157
}
196158
197-
.content figure pre code *,
198-
#type-definitions-container pre code * {
159+
.content figure pre code * {
199160
font-family: 'Cascadia Code', sans-serif;
200161
}
201162
202-
.content figure pre code span[data-highlighted-line],
203-
#type-definitions-container pre code span[data-highlighted-line] {
163+
.content figure pre code span[data-highlighted-line] {
204164
background-color: rgba(200, 200, 255, 0.1);
205165
}
206166
207-
.content figure pre code > [data-line],
208-
#type-definitions-container pre code > [data-line] {
167+
.content figure pre code > [data-line] {
209168
padding: 2px 20px;
210169
}
211170
212-
.content figure pre code[data-line-numbers] > [data-line]::before,
213-
#type-definitions-container pre code[data-line-numbers] > [data-line]::before {
171+
.content figure pre code[data-line-numbers] > [data-line]::before {
214172
counter-increment: line;
215173
content: counter(line);
216174
display: inline-block;
@@ -221,17 +179,13 @@
221179
}
222180
223181
.content figure pre code,
224-
#type-definitions-container pre code,
225-
.content figure pre code span,
226-
#type-definitions-container pre code span {
182+
.content figure pre code span {
227183
color: var(--shiki-light);
228184
background-color: var(--shiki-light-bg);
229185
}
230186
231187
html.dark .content figure pre code,
232-
html.dark #type-definitions-container pre code,
233-
html.dark .content figure pre code span,
234-
html.dark #type-definitions-container pre code span {
188+
html.dark .content figure pre code span {
235189
color: var(--shiki-dark);
236190
background-color: var(--shiki-dark-bg);
237191
}

docs/vite.config.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defineConfig } from 'vitest/config';
1+
import { defineConfig } from 'vite';
22
import { sveltekit } from '@sveltejs/kit/vite';
33

44
export default defineConfig({
@@ -7,8 +7,5 @@ export default defineConfig({
77
fs: {
88
allow: ['../packages/core', './content']
99
}
10-
},
11-
test: {
12-
include: ['src/**/*.{test,spec}.{js,ts}']
1310
}
1411
});

0 commit comments

Comments
 (0)