blob: 34bc7ac9974544e6aff500b5492f90d54f9c7b58 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
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<typeof getPost>;
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<string>();
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<typeof source>;
export type Meta = InferMetaType<typeof source>;
|