export const VISITOR_COOKIE_NAME = "arena_visitor_id"; export const VISITOR_COOKIE_MAX_AGE_SECONDS = 60 * 60 * 24 * 365 * 2; export function readVisitorCookie(request) { return readCookie(request, VISITOR_COOKIE_NAME); } export function writeVisitorCookie(reply, visitorId, { secure = false } = {}) { const secureFlag = secure ? "; Secure" : ""; reply.header( "Set-Cookie", `${VISITOR_COOKIE_NAME}=${encodeURIComponent(visitorId)}; Path=/; Max-Age=${VISITOR_COOKIE_MAX_AGE_SECONDS}; SameSite=Lax; HttpOnly${secureFlag}`, ); } export function isValidVisitorId(value) { return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test( value, ); } function readCookie(request, name) { const cookieHeader = request.headers.cookie; if (!cookieHeader) { return ""; } const cookies = cookieHeader.split(";").map((cookie) => cookie.trim()); const matchedCookie = cookies.find((cookie) => cookie.startsWith(`${name}=`)); if (!matchedCookie) { return ""; } try { return decodeURIComponent(matchedCookie.slice(name.length + 1)); } catch { return ""; } }