import { events } from "@minecraft-account-manager/database"; import { eq } from "drizzle-orm"; import Link from "next/link"; import { notFound } from "next/navigation"; import { db } from "@/lib/database"; import { eventIpSummary } from "@/lib/event-ip-summary"; export const dynamic = "force-dynamic"; const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; export default async function EventDetailPage({ params }: { params: Promise<{ eventId: string }> }) { const { eventId } = await params; if (!UUID_PATTERN.test(eventId)) notFound(); const [event] = await db.select().from(events).where(eq(events.id, eventId)).limit(1); if (!event) notFound(); const network = eventIpSummary(event.data); return (
← Event explorer

CloudEvent detail

{event.type}

{event.id}

Envelope

{event.specVersion} {event.source} {event.subject ?? "Not provided"} {event.dataContentType} {event.dataSchema ?? "Not provided"} {event.actorUserId ? {event.actorUserId} : "Not provided"} {event.correlationId ?? "Not provided"} {event.ipAddress ?? "Not provided"} {network.classification || network.location ? `${network.classification ?? "unknown"} · ${network.location ?? "location unavailable"}` : "Not provided"} {event.publishedAt ? event.publishedAt.toISOString() : "Pending publication"} {event.createdAt.toISOString()}

Event data

{JSON.stringify(event.data, null, 2)}
); } function Detail({ label, children }: { label: string; children: React.ReactNode }) { return
{label}
{children}
; }