import { MainLayout } from "@components/layouts/main.tsx"; import { Handlers, PageProps } from "$fresh/server.ts"; import { AccessDeniedError } from "@lib/errors.ts"; import { getLogs, Log } from "@lib/log/index.ts"; import { formatDate } from "@lib/string.ts"; import { renderMarkdown } from "@lib/documents.ts"; const renderLog = (t: unknown) => renderMarkdown(`\`\`\`js ${typeof t === "string" ? t : JSON.stringify(t, null, 2).trim()} \`\`\``); export const handler: Handlers = { async GET(_, ctx) { const logs = await getLogs(); if (!("session" in ctx.state)) { throw new AccessDeniedError(); } console.log({ logs }); return ctx.render({ logs: logs.map((l) => { return { ...l, html: l.args.map(renderLog).join("
"), }; }), }); }, }; function LogLine( { log }: { log: Log; }, ) { return (
{log.date.getHours().toString().padStart(2, "0")}:{log.date .getMinutes().toString().padStart(2, "0")}:{log.date.getSeconds() .toString().padStart(2, "0")} {formatDate(log.date)} {log.scope} {log.level}
); } export default function Greet( { data: { logs }, url }: PageProps<{ logs: Log[] }>, ) { return (

Logs

{logs.map((r) => { return ( ); })}
); }