mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-16 11:07:38 -04:00

the #shared alias used by Nuxt cannot be easily disabled and to prevent breackage with jiti, we make use of it
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import type { Post } from '#shared/blog/metadata.ts';
|
|
import { getPosts } from '~~/server/blog.ts';
|
|
import { getLocale, loadConfig } from '~~/server/data.ts';
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const config = await loadConfig(getLocale(event));
|
|
if (!config.links.enabled || !config.links.blog) {
|
|
throw createError({
|
|
status: 404,
|
|
statusMessage: 'Not Found',
|
|
});
|
|
}
|
|
|
|
const query = getQuery(event);
|
|
const posts = await getPosts(config);
|
|
|
|
return posts.filter((post) => {
|
|
if (query.shortcuts !== undefined) {
|
|
if (!config.blog || !config.blog.shortcuts) {
|
|
return false;
|
|
}
|
|
|
|
if (!Object.values(config.blog.shortcuts).includes(post.slug)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (query.slugs !== undefined) {
|
|
const slugs = Array.isArray(query.slugs) ? query.slugs : [query.slugs];
|
|
if (!slugs.includes(post.slug)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}).map((post): Post => ({
|
|
slug: post.slug,
|
|
title: post.title,
|
|
date: post.date,
|
|
authors: post.authors,
|
|
hero: post.hero,
|
|
}));
|
|
});
|