From f4e899db0741db244f733c69a162853b3230ede6 Mon Sep 17 00:00:00 2001 From: Matthew Zegar Date: Sat, 11 Nov 2023 14:50:54 -0500 Subject: [PATCH] Try lib helper ts file agian... --- src/lib/utils/SlugFromPath.ts | 2 ++ src/routes/blog/[slug]/+page.server.ts | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/lib/utils/SlugFromPath.ts create mode 100644 src/routes/blog/[slug]/+page.server.ts diff --git a/src/lib/utils/SlugFromPath.ts b/src/lib/utils/SlugFromPath.ts new file mode 100644 index 0000000..ae2d373 --- /dev/null +++ b/src/lib/utils/SlugFromPath.ts @@ -0,0 +1,2 @@ +export const slugFromPath = (path: string) => + path.match(/([\w-]+)\.(svelte\.md|md|svx)/i)?.[1] ?? null; diff --git a/src/routes/blog/[slug]/+page.server.ts b/src/routes/blog/[slug]/+page.server.ts new file mode 100644 index 0000000..b0ba936 --- /dev/null +++ b/src/routes/blog/[slug]/+page.server.ts @@ -0,0 +1,20 @@ +import type { EntryGenerator } from './$types'; +import { slugFromPath } from '$lib/utils/SlugFromPath'; + +// https://kit.svelte.dev/docs/page-options#prerender-troubleshooting +export const entries: EntryGenerator = async () => { + const modules = import.meta.glob(`/src/blogs/*.{md,svx,svelte.md}`); + const postPromises = Object.entries(modules).map(([path, resolver]) => + resolver().then( + (post) => + ({ + slug: slugFromPath(path), + ...(post as unknown as App.MdsvexFile).metadata + }) as App.BlogPost + ) + ); + + const posts = await Promise.all(postPromises); + return posts; +}; +export const prerender = true;