33 lines
864 B
TypeScript
33 lines
864 B
TypeScript
import path from 'path';
|
||
|
||
export async function fetchPostsSorted() {
|
||
const allPosts = await fetchPosts();
|
||
|
||
const sortedPosts = allPosts
|
||
// Для списка постов оставляем только те, у которых объявлена дата публикации
|
||
.filter((a) => !!a.date)
|
||
.sort((a, b) => {
|
||
return new Date(b.date!).valueOf() - new Date(a.date!).valueOf();
|
||
});
|
||
|
||
return sortedPosts;
|
||
};
|
||
|
||
export async function fetchPosts() {
|
||
const allPostFiles = import.meta.glob('/src/blogs/*.md');
|
||
const iterablePostFiles = Object.entries(allPostFiles);
|
||
|
||
const allPosts: App.BlogPost[] = await Promise.all(
|
||
iterablePostFiles.map(async ([filePath, resolver]) => {
|
||
const { metadata }: any = await resolver();
|
||
const { name } = path.parse(filePath);
|
||
|
||
return {
|
||
slug: name,
|
||
...metadata
|
||
};
|
||
})
|
||
);
|
||
|
||
return allPosts;
|
||
};
|