import { Hono } from 'hono'; import { jsxRenderer, useRequestContext } from 'hono/jsx-renderer'; import { Page } from '@blog/templates/Page'; import { Home } from '@blog/templates/Pages/Home'; import { FourOhFour } from '@blog/templates/Pages/FourOhFour'; import { Post } from '@blog/templates/Pages/Post'; import { readdir } from 'node:fs/promises'; import { readPostMarkdown } from '@blog/util/readPostMarkdown'; const app = new Hono(); app.get( '*', jsxRenderer( ({ children }) => { return ({children}); }, { docType: true } ) ); // read all posts // create listing of posts app.get('/', async (c) => { const files = await readdir('../posts', { recursive: true }); const posts = files.filter(f => f === '.' || f === '..'); return c.render(); }); app.get('/posts/:slug', async (c) => { const postSlug: string = c.req.param("slug"); const fileName: string = postSlug + '.md'; const files = await readdir(__dirname + "/../posts"); const postFile = files.find(f => f === fileName); if (!postFile) { c.status(404); return c.render(); } const post = await readPostMarkdown(__dirname + "/../posts/" + postFile); return c.render(); }); export default app;