diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts new file mode 100644 index 0000000..116bda9 --- /dev/null +++ b/src/routes/+page.server.ts @@ -0,0 +1,32 @@ +import type { SvelteComponent } from 'svelte'; +import type { MDsveXComponent } from '$lib/types'; + +export interface BlogEntry { + name: string; + src: string; + img: string; + date: string; + desc: string; +} + + +export function load() { + const blog_entries: BlogEntry[] = + Object.entries(import.meta.glob('/src/routes/blogs/**/+page.svx', { eager: true })) + .map(([key, value]) => [ + key.split('/src/routes').pop()?.split('/+page.svx').slice(0, -1).pop() as string, + value as MDsveXComponent + ]) + .map(([link, val]) => + typeof val.metadata?.src !== 'undefined' ? [val.metadata?.src, val] : [link, val] + ) + .map(([link, val]) => { + val.metadata.date = Date.parse(val.metadata.date); + return [link, val]; + }) + .sort(([link1, a], [link2, b]) => b.metadata?.date - a.metadata?.date) + .map(([link, val]) => { return { src: link, title: val.metadata.title, img: val.metadata.img, date: new Date(val.metadata.date).toDateString(), desc: val.metadata.desc } }) + return { + blogs: blog_entries + }; +} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e03c9d9..32b1c4b 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,24 +1,9 @@
@@ -28,12 +13,12 @@ This is a collection of things I've set up and created that I think might interest others.

- {#each blog_entries as [href, page]} - + {#each blogs as blog} +
-

{page.metadata?.title}

-

{page.metadata?.desc}

-

{new Date(page.metadata?.date).toDateString()}

+

{blog.title}

+

{blog.desc}

+

{blog.date}