24 lines
843 B
TypeScript
24 lines
843 B
TypeScript
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 { createEventStream, eventStreamHeaders } from "@/lib/events/sse";
|
|
|
|
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";
|
|
const channel = createEventStream({ signal: request.signal });
|
|
channel.sendNamed("deployment", deploymentId);
|
|
|
|
return new Response(channel.stream, {
|
|
headers: eventStreamHeaders(),
|
|
});
|
|
} catch (cause) {
|
|
return errorResponse(cause);
|
|
}
|
|
}
|