import { randomBytes } from 'node:crypto' const TOKEN_TTL_MS = 60 * 1000 const tokens = new Map() function purgeExpired() { const now = Date.now() for (const [key, entry] of tokens) { if (entry.expiresAt <= now) tokens.delete(key) } } export function createStaffPreviewToken(payload) { purgeExpired() const token = randomBytes(32).toString('hex') tokens.set(token, { ...payload, expiresAt: Date.now() + TOKEN_TTL_MS, }) return token } export function consumeStaffPreviewToken(token) { purgeExpired() const entry = tokens.get(token) if (!entry) return null tokens.delete(token) if (entry.expiresAt <= Date.now()) return null return entry }