aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/blog/Post.ts
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2026-01-14 04:36:14 +0100
committerLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2026-01-14 04:36:14 +0100
commit481c06cdb6bfb370ba2d84f4b6bb4ba260eb14cd (patch)
treeb022a161677183e9a08e2183c1a254a553907927 /src/lib/blog/Post.ts
parent347824c75406238a6e9d50b4833a60c2c43140a7 (diff)
downloadmem-estrogen-zone-481c06cdb6bfb370ba2d84f4b6bb4ba260eb14cd.tar.gz
mem-estrogen-zone-481c06cdb6bfb370ba2d84f4b6bb4ba260eb14cd.tar.bz2
mem-estrogen-zone-481c06cdb6bfb370ba2d84f4b6bb4ba260eb14cd.tar.lz
mem-estrogen-zone-481c06cdb6bfb370ba2d84f4b6bb4ba260eb14cd.zip

feat: start work on blog

Diffstat (limited to 'src/lib/blog/Post.ts')
-rw-r--r--src/lib/blog/Post.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/lib/blog/Post.ts b/src/lib/blog/Post.ts
new file mode 100644
index 0000000..440dffa
--- /dev/null
+++ b/src/lib/blog/Post.ts
@@ -0,0 +1,28 @@
+
+import type { Component } from 'svelte';
+
+export type PostMetadata<Parsed extends boolean = false> = {
+ title: string;
+ blurb: string;
+ author: string | null;
+ slug: string;
+ id: string | number;
+ created: Parsed extends true ? Date : string;
+ updated: Parsed extends true ? Date : string;
+};
+export type Post<MetadataParsed extends boolean = false> = {
+ metadata: PostMetadata<MetadataParsed>;
+ default: Component;
+};
+
+export const parsePostMetadata = (
+ m: PostMetadata<boolean>,
+): PostMetadata<true> => ({
+ ...m,
+ created: new Date(m.created),
+ updated: new Date(m.updated),
+});
+export const parsePost = (p: Post<boolean>): Post<true> => ({
+ ...p,
+ metadata: parsePostMetadata(p.metadata),
+});