import { loader } from 'fumadocs-core/source'; import type { InferMetaType, InferPageType } from 'fumadocs-core/source'; import { createMDXSource } from 'fumadocs-mdx'; import { blog } from '.source'; export const source = loader({ baseUrl: '/posts', source: createMDXSource(blog), }); export const { getPage: getPost, getPages: getPosts, pageTree } = source; export type Post = ReturnType; const posts = getPosts(); export const getSortedByDatePosts = () => posts.toSorted((a, b) => b.data.date.getTime() - a.data.date.getTime()); export const getTags = () => { const tagSet = new Set(); for (const post of posts) { if (post.data.tags) { for (const tag of post.data.tags) { tagSet.add(tag); } } } return Array.from(tagSet).toSorted(); }; export const getPostsByTag = (tag: string) => { return posts .filter((post) => post.data.tags?.includes(tag)) .toSorted((a, b) => b.data.date.getTime() - a.data.date.getTime()); }; export type Page = InferPageType; export type Meta = InferMetaType;