/**
 * Lit la date d'expiration d'un JWT sans dépendance externe.
 * Retourne un timestamp en ms, ou null si invalide.
 */
export function getTokenExpiry(token: string | null): number | null {
  if (!token) return null
  try {
    const payload = token.split(".")[1]
    if (!payload) return null
    const decoded = JSON.parse(atob(payload.replace(/-/g, "+").replace(/_/g, "/")))
    if (!decoded?.exp) return null
    return decoded.exp * 1000 // secondes → ms
  } catch {
    return null
  }
}

/** Retourne le nombre de secondes restantes avant expiry (négatif = expiré) */
export function secondsUntilExpiry(token: string | null): number {
  const exp = getTokenExpiry(token)
  if (!exp) return -1
  return Math.floor((exp - Date.now()) / 1000)
}
