Skip to content

Commit 6934931

Browse files
authored
feat: multi-page docs (#8253)
* Rename markdown to blog * Multi-page docs * Ignore missing ID for now * heading * Add code snippets(temporary) * /docs redirects to introduction * Remove ukraine petition * OnThisPage * Remove console.log * Update deps * Fix accessibility warning * Update site-kit
1 parent 7afee76 commit 6934931

File tree

24 files changed

+2416
-692
lines changed

24 files changed

+2416
-692
lines changed

sites/svelte.dev/package-lock.json

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

sites/svelte.dev/package.json

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"test": "uvu -r ts-node/register src/lib/server/markdown"
1717
},
1818
"dependencies": {
19-
"@supabase/supabase-js": "^2.7.0",
19+
"@supabase/supabase-js": "^2.7.1",
2020
"@sveltejs/repl": "0.0.3",
2121
"cookie": "^0.5.0",
2222
"devalue": "^4.2.3",
@@ -25,27 +25,31 @@
2525
"sourcemap-codec": "^1.4.8"
2626
},
2727
"devDependencies": {
28-
"@resvg/resvg-js": "^2.2.0",
29-
"@sveltejs/adapter-auto": "^1.0.2",
30-
"@sveltejs/kit": "^1.3.10",
31-
"@sveltejs/site-kit": "^3.2.1",
28+
"@resvg/resvg-js": "^2.3.1",
29+
"@sveltejs/adapter-auto": "^2.0.0",
30+
"@sveltejs/kit": "^1.5.0",
31+
"@sveltejs/site-kit": "^3.2.2",
3232
"@sveltejs/vite-plugin-svelte": "^2.0.2",
33+
"@types/marked": "^4.0.8",
34+
"@types/prismjs": "^1.26.0",
3335
"degit": "^2.8.4",
3436
"dotenv": "^16.0.3",
35-
"jimp": "^0.16.2",
37+
"jimp": "^0.22.4",
3638
"marked": "^4.2.12",
3739
"node-fetch": "^3.3.0",
3840
"prettier": "^2.8.3",
3941
"prettier-plugin-svelte": "^2.9.0",
4042
"prism-svelte": "^0.5.0",
4143
"prismjs": "^1.29.0",
42-
"satori": "^0.1.2",
44+
"satori": "^0.2.3",
4345
"satori-html": "^0.3.2",
4446
"shelljs": "^0.8.5",
47+
"shiki": "^0.14.0",
48+
"shiki-twoslash": "^3.1.0",
4549
"svelte": "^3.55.1",
4650
"svelte-check": "^3.0.3",
4751
"typescript": "^4.9.5",
48-
"vite": "^4.0.4",
52+
"vite": "^4.1.1",
4953
"vite-imagetools": "^4.0.18"
5054
}
5155
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import fs from 'fs';
2+
import { extract_frontmatter } from '../markdown';
3+
import { transform } from './marked';
4+
5+
/**
6+
* @returns {import('./types').BlogPostSummary[]}
7+
*/
8+
export function get_index() {
9+
return fs
10+
.readdirSync('content/blog')
11+
.reverse()
12+
.map((file) => {
13+
if (!file.endsWith('.md')) return;
14+
15+
const { date, slug } = get_date_and_slug(file);
16+
17+
const content = fs.readFileSync(`content/blog/${file}`, 'utf-8');
18+
const { metadata } = extract_frontmatter(content);
19+
20+
return {
21+
slug,
22+
date,
23+
title: metadata.title,
24+
description: metadata.description,
25+
draft: !!metadata.draft,
26+
};
27+
});
28+
}
29+
30+
/**
31+
* @param {string} slug
32+
* @returns {import('./types').BlogPost}
33+
*/
34+
export function get_post(slug) {
35+
for (const file of fs.readdirSync('content/blog')) {
36+
if (!file.endsWith('.md')) continue;
37+
if (file.slice(11, -3) !== slug) continue;
38+
39+
const { date, date_formatted } = get_date_and_slug(file);
40+
41+
const content = fs.readFileSync(`content/blog/${file}`, 'utf-8');
42+
const { metadata, body } = extract_frontmatter(content);
43+
44+
return {
45+
date,
46+
date_formatted,
47+
title: metadata.title,
48+
description: metadata.description,
49+
author: {
50+
name: metadata.author,
51+
url: metadata.authorURL,
52+
},
53+
draft: !!metadata.draft,
54+
content: transform(body),
55+
};
56+
}
57+
}
58+
59+
/** @param {string} filename */
60+
function get_date_and_slug(filename) {
61+
const match = /^(\d{4}-\d{2}-\d{2})-(.+)\.md$/.exec(filename);
62+
if (!match) throw new Error(`Invalid filename for blog: '${filename}'`);
63+
64+
const [, date, slug] = match;
65+
const [y, m, d] = date.split('-');
66+
const date_formatted = `${months[+m - 1]} ${+d} ${y}`;
67+
68+
return { date, date_formatted, slug };
69+
}
70+
71+
const months = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');
72+
73+
function format_date(date) {}

0 commit comments

Comments
 (0)