import { errorResponse } from "@/lib/security/http"; import { limitRequest, trustedClientAddress } from "@/lib/security/rate-limit"; import { connection } from "next/server"; import { normalizeDeploymentId } from "@/lib/deployment/version"; import { DEPLOYMENT_EVENT_TOPIC, getLatestDeploymentStatus, } from "@/lib/deployment/repository"; import { createRedisNamedEventResponse } from "@/lib/events/redis-stream"; export async function GET(request: Request) { await connection(); try { await limitRequest("stream-open", trustedClientAddress(request.headers), 60); const deploymentId = normalizeDeploymentId(process.env.NEXT_DEPLOYMENT_ID) ?? "development"; return await createRedisNamedEventResponse( DEPLOYMENT_EVENT_TOPIC, "deployment-status", request.signal, async () => { const latestStatus = await getLatestDeploymentStatus(); return [ { eventName: "deployment", data: deploymentId }, ...(latestStatus ? [{ eventName: "deployment-status", data: JSON.stringify(latestStatus) }] : []), ]; }, ); } catch (cause) { return errorResponse(cause); } }