Skip to content

Auth

Handles NIP-42 relay authentication flow.

Core Classes

AuthState

Manages authentication state for a socket connection.

Status Values:

  • AuthStatus.None - No authentication required/attempted
  • AuthStatus.Requested - Relay requested authentication
  • AuthStatus.PendingSignature - Waiting for user to sign auth event
  • AuthStatus.DeniedSignature - User denied signing
  • AuthStatus.PendingResponse - Waiting for relay response
  • AuthStatus.Forbidden - Authentication failed
  • AuthStatus.Ok - Authentication successful

Methods:

  • doAuth(sign) - Authenticate with the relay using provided signing function
  • attemptAuth(sign) - Attempt authentication with timeout handling
  • cleanup() - Clean up event listeners

Events:

  • AuthStateEvent.Status - Emitted when authentication status changes

Example

typescript
const authState = new AuthState(socket)

// Listen for auth status changes
authState.on(AuthStateEvent.Status, (status) => {
  console.log('Auth status:', status)
})

// Attempt authentication when relay requests it
await authState.attemptAuth(async (template) => {
  return await signer.signEvent(template)
})