if (process.env.NODE_ENV !== "test") require("server-only"); import { headers } from "next/headers"; import { createRequestId } from "@/lib/server/errors"; function parseForwardedIp(value: string | null): string | null { if (!value) return null; const first = value.split(",")[0]?.trim(); if (!first) return null; return first.slice(0, 64); } function sanitizeRequestId(value: string | null) { if (!value) return null; const trimmed = value.trim(); if (!trimmed) return null; const normalized = trimmed.slice(0, 96).replace(/[^a-zA-Z0-9._:-]/g, ""); return normalized || null; } export async function getRequestMeta() { const headerStore = await headers(); const forwardedRequestId = sanitizeRequestId(headerStore.get("x-request-id")); const requestId = forwardedRequestId || createRequestId(); const ip = parseForwardedIp(headerStore.get("x-forwarded-for")) || parseForwardedIp(headerStore.get("x-real-ip")); return { requestId, ip, userAgent: headerStore.get("user-agent") }; }