51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import type { ArticleFrontmatter, ProjectFrontmatter } from "./types";
|
|
import { getShortDescription, processContentInDir } from "./utils";
|
|
|
|
export const articles = (
|
|
await processContentInDir<ArticleFrontmatter, ArticleFrontmatter>(
|
|
"blog",
|
|
(data) => {
|
|
const shortDescription = getShortDescription(
|
|
data.frontmatter.description,
|
|
);
|
|
return {
|
|
title: data.frontmatter.title,
|
|
description: shortDescription,
|
|
tags: data.frontmatter.tags,
|
|
time: data.frontmatter.time,
|
|
featured: data.frontmatter.featured,
|
|
timestamp: data.frontmatter.timestamp,
|
|
filename: `/blog/${data.frontmatter.filename}`,
|
|
};
|
|
},
|
|
)
|
|
).sort((a, b) => {
|
|
const dateA = new Date(a.timestamp);
|
|
const dateB = new Date(b.timestamp);
|
|
return dateB.getTime() - dateA.getTime();
|
|
});
|
|
|
|
export const projects = (
|
|
await processContentInDir<ProjectFrontmatter, ProjectFrontmatter>(
|
|
"projects",
|
|
(data) => {
|
|
const shortDescription = getShortDescription(
|
|
data.frontmatter.description,
|
|
);
|
|
return {
|
|
title: data.frontmatter.title,
|
|
description: shortDescription,
|
|
tags: data.frontmatter.tags,
|
|
githubUrl: data.frontmatter.githubUrl,
|
|
liveUrl: data.frontmatter.liveUrl,
|
|
featured: data.frontmatter.featured,
|
|
timestamp: data.frontmatter.timestamp,
|
|
filename: `/projects/${data.frontmatter.filename}`,
|
|
};
|
|
},
|
|
)
|
|
).sort((a, b) => {
|
|
const dateA = new Date(a.timestamp);
|
|
const dateB = new Date(b.timestamp);
|
|
return dateB.getTime() - dateA.getTime();
|
|
}); |