diff --git a/package.json b/package.json index 9a415ca..16ac517 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "thomaswilson-sveltekit", + "license": "UNLICENSED", "version": "1.0.0", "scripts": { "dev": "vite dev", @@ -11,9 +12,9 @@ "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ." }, "devDependencies": { - "@sveltejs/adapter-auto": "^1.0.0-next.64", - "@sveltejs/adapter-netlify": "^1.0.0-next.51", - "@sveltejs/kit": "^1.0.0-next.405", + "@sveltejs/adapter-auto": "^1.0.0-next.65", + "@sveltejs/adapter-netlify": "^1.0.0-next.71", + "@sveltejs/kit": "^1.0.0-next.428", "@types/sanitize-html": "^2.6.2", "@typescript-eslint/eslint-plugin": "^5.32.0", "@typescript-eslint/parser": "^5.32.0", diff --git a/src/routes/__layout.svelte b/src/routes/+layout.svelte similarity index 100% rename from src/routes/__layout.svelte rename to src/routes/+layout.svelte diff --git a/src/routes/index.svelte b/src/routes/+page.svelte similarity index 98% rename from src/routes/index.svelte rename to src/routes/+page.svelte index 8c563f2..8c61574 100644 --- a/src/routes/index.svelte +++ b/src/routes/+page.svelte @@ -1,7 +1,3 @@ - - - Blog | thomaswilson.xyz - - + + - - - - + + + + - - + + @@ -81,13 +49,11 @@ things.

- It's been + It's been {daysSinceLastPublish} - {daysSinceLastPublish === 1 ? 'day' : 'days'} since I last published something. On average I publish something every {averageDaysBetweenPosts} days ({numberOfPosts} posts in {daysSinceFirstPost} days). + {daysSinceLastPublish === 1 ? 'day' : 'days'} since I last published something. On average I publish + something every {averageDaysBetweenPosts} days ({numberOfPosts} posts in {daysSinceFirstPost} days).

diff --git a/src/routes/blog/+page.ts b/src/routes/blog/+page.ts new file mode 100644 index 0000000..21c5832 --- /dev/null +++ b/src/routes/blog/+page.ts @@ -0,0 +1,36 @@ +import type { LoadEvent, Load, Page } from '@sveltejs/kit'; +import { differenceInCalendarDays, intlFormat } from 'date-fns'; +export const prerender = true; + +type BlogPost = { + filename: string; + preview: string[]; + title: string; + slug: string; + date: Date; + book_review?: boolean; +}; + +export async function load({ fetch }: LoadEvent) { + const posts = await fetch('/api/blog.json') + .then((res) => res.json()) + .then((res) => res.posts); + + const mostRecentPost = posts[0]; + + const daysSinceLastPublish = differenceInCalendarDays(new Date(), new Date(mostRecentPost.date)); + + const numberOfPosts = posts.length; + const firstPost = posts[numberOfPosts - 1]; + const daysSinceFirstPost = differenceInCalendarDays(new Date(), new Date(firstPost.date)); + const averageDaysBetweenPosts = Number(daysSinceFirstPost / numberOfPosts).toFixed(2); + + return { + posts, + firstPost, + averageDaysBetweenPosts, + daysSinceFirstPost, + daysSinceLastPublish, + numberOfPosts + }; +} diff --git a/src/routes/blog/[slug].svelte b/src/routes/blog/[slug]/+page.svelte similarity index 70% rename from src/routes/blog/[slug].svelte rename to src/routes/blog/[slug]/+page.svelte index ce42a81..ba68848 100644 --- a/src/routes/blog/[slug].svelte +++ b/src/routes/blog/[slug]/+page.svelte @@ -1,34 +1,11 @@ - - diff --git a/src/routes/blog/[slug]/+page.ts b/src/routes/blog/[slug]/+page.ts new file mode 100644 index 0000000..b40a913 --- /dev/null +++ b/src/routes/blog/[slug]/+page.ts @@ -0,0 +1,17 @@ +import type { LoadEvent } from '@sveltejs/kit'; +import type { Post } from '$lib/Post'; + +export async function load({ params, fetch }: LoadEvent): Promise<{ post: Post; date: Date }> { + const { slug } = params; + const { post } = await fetch(`/api/blog/${slug}.json`) + .then((res) => res.json()) + .catch((error) => { + console.error(error); + return { post: null }; + }); + + return { + post, + date: new Date(post.date) + }; +} diff --git a/src/routes/mcc.svelte b/src/routes/mcc/+page.svelte similarity index 99% rename from src/routes/mcc.svelte rename to src/routes/mcc/+page.svelte index 9e8fd62..08f5e66 100644 --- a/src/routes/mcc.svelte +++ b/src/routes/mcc/+page.svelte @@ -1,6 +1,6 @@