// Base64url (URL-safe: no '+', '/', or '=' padding, unlike plain base64) so an
// encoded id is safe to drop straight into a URL path segment, e.g.
// /api/v1/roles/Mw instead of /api/v1/roles/3. No package needed — Node's
// Buffer supports the "base64url" encoding natively (Node 15.7+).
export function encodeId(id: number): string {
  return Buffer.from(String(id), 'utf-8').toString('base64url');
}

export function decodeId(encoded: string | undefined): number | null {
  if (!encoded) return null;
  try {
    const decoded = Buffer.from(encoded, 'base64url').toString('utf-8');
    const id = Number(decoded);
    return Number.isInteger(id) && id > 0 ? id : null;
  } catch {
    return null;
  }
}
