Skip to content

parity(auth): getClaims() should return typed AuthInvalidJwtError for expired JWT [from supabase-js] #262

Description

@grdsdev

Warning

Auto-generated parity issue — may be a false positive.

This issue was created automatically by /sync-sdk-parity from a heuristic analysis of recent supabase-js commits. The tooling has limited insight into language-specific idioms and may have:

  • misidentified a JS-only change as cross-language relevant,
  • missed an existing implementation in this SDK under a different name,
  • or proposed an API shape that doesn't fit this language's conventions.

It is the SDK author's responsibility to validate the need before implementing. If this change does not apply to this SDK, please close the issue with a short note explaining why.


SDK Parity: C# implementation needed

A bug fix was made in supabase-js auth that may apply to this repository. Please confirm applicability before starting work.

Reference Implementation (supabase-js)

What Changed

getClaims() now catches expired-JWT errors and rethrows as AuthInvalidJwtError, ensuring callers receive a stable named error type.

Implementation Guidance (C#)

public class AuthInvalidJwtException : AuthException
{
    public AuthInvalidJwtException(string message) : base(message) { }
}

// GetClaims() with expired JWT:
// throw new AuthInvalidJwtException("JWT has expired");
// Callers: catch (AuthInvalidJwtException e) { ... }

Key Behaviors to Match

  • Expired JWT in GetClaims() throws a specific named exception type
  • Distinguishable from generic AuthException via type check

Acceptance Criteria

  • GetClaims() with expired JWT throws AuthInvalidJwtException
  • Distinguishable from generic AuthException
  • Test covers expired JWT case

Context

  • supabase-js version: v2.107.0
  • Related: SDK-1035 (dart), SDK-1036 (py), SDK-1037 (swift)
  • Parity tracking: Auto-generated by /sync-sdk-parity

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions