@authon/shared

v0.3.0

Published

Shared types and constants for Authon SDKs

Readme

English | 한국어

@authon/shared

npm version License

Shared types and constants for Authon SDK packages. This package is consumed internally by @authon/js, @authon/react, @authon/node, and all other Authon SDKs.

Note: This package is not intended for direct use in application code. Install the appropriate framework SDK instead (e.g., @authon/js, @authon/react, @authon/node).

Installation

npm install @authon/shared
# or
pnpm add @authon/shared

Usage

import type {
  AuthonUser,
  AuthonSession,
  AuthTokens,
  BrandingConfig,
  SessionConfig,
  WebhookEvent,
  MfaSetupResponse,
  MfaStatus,
  PasskeyCredential,
  Web3Wallet,
  Web3NonceResponse,
  SessionInfo,
  Web3Chain,
  Web3WalletType,
  OAuthProviderType,
  WebhookEventType,
} from '@authon/shared';

import {
  OAUTH_PROVIDERS,
  PROVIDER_DISPLAY_NAMES,
  PROVIDER_COLORS,
  WEBHOOK_EVENTS,
  API_KEY_PREFIXES,
  DEFAULT_BRANDING,
  DEFAULT_SESSION_CONFIG,
} from '@authon/shared';

Exported Types

Core

AuthonUser

The authenticated user object.

interface AuthonUser {
  id: string;
  projectId: string;
  email: string | null;
  displayName: string | null;
  avatarUrl: string | null;
  phone: string | null;
  emailVerified: boolean;
  phoneVerified: boolean;
  isBanned: boolean;
  publicMetadata: Record<string, unknown> | null;
  lastSignInAt: string | null;
  signInCount: number;
  createdAt: string;
  updatedAt: string;
}

AuthonSession

An active user session record (from the server SDK).

interface AuthonSession {
  id: string;
  userId: string;
  ipAddress: string | null;
  userAgent: string | null;
  deviceName: string | null;
  lastActiveAt: string | null;
  createdAt: string;
  expiresAt: string;
}

AuthTokens

Token pair returned after a successful sign-in.

interface AuthTokens {
  accessToken: string;
  refreshToken: string;
  expiresIn: number; // seconds
  user: AuthonUser;
}

SessionInfo

Simplified session info returned to clients (used in listSessions()).

interface SessionInfo {
  id: string;
  ipAddress: string | null;
  userAgent: string | null;
  createdAt: string;
  lastActiveAt: string | null;
}

Branding & Config

BrandingConfig

Visual customization options for the Authon modal.

interface BrandingConfig {
  logoDataUrl?: string;
  brandName?: string;
  primaryColorStart?: string;
  primaryColorEnd?: string;
  lightBg?: string;
  lightText?: string;
  darkBg?: string;
  darkText?: string;
  borderRadius?: number;
  providerOrder?: string[];
  hiddenProviders?: string[];
  showEmailPassword?: boolean;
  showDivider?: boolean;
  termsUrl?: string;
  privacyUrl?: string;
  customCss?: string;
  locale?: string;
  showSecuredBy?: boolean;
}

SessionConfig

Session lifetime and concurrency settings.

interface SessionConfig {
  accessTokenTtl?: number;   // seconds, default 900 (15 min)
  refreshTokenTtl?: number;  // seconds, default 604800 (7 days)
  maxSessions?: number;      // default 5
  singleSession?: boolean;   // default false
}

MFA

MfaSetupResponse

Returned by setupMfa().

interface MfaSetupResponse {
  secret: string;      // TOTP secret
  qrCodeUri: string;   // otpauth:// URI
  backupCodes: string[]; // one-time recovery codes
}

MfaStatus

Returned by getMfaStatus().

interface MfaStatus {
  enabled: boolean;
  backupCodesRemaining: number;
}

Passkeys

PasskeyCredential

A registered WebAuthn passkey.

interface PasskeyCredential {
  id: string;
  name: string | null;
  createdAt: string;
  lastUsedAt: string | null;
}

Web3

Web3Chain

type Web3Chain = 'evm' | 'solana';

Web3WalletType

type Web3WalletType =
  | 'metamask'
  | 'pexus'
  | 'walletconnect'
  | 'coinbase'
  | 'phantom'
  | 'trust'
  | 'other';

Web3Wallet

A linked Web3 wallet.

interface Web3Wallet {
  id: string;
  address: string;
  chain: Web3Chain;
  walletType: Web3WalletType;
  chainId: number | null;
  createdAt: string;
}

Web3NonceResponse

Returned by web3GetNonce().

interface Web3NonceResponse {
  message: string; // full message to sign
  nonce: string;   // raw nonce embedded in message
}

Webhooks

WebhookEvent

Incoming webhook payload from Authon.

interface WebhookEvent {
  id: string;
  type: string;
  projectId: string;
  timestamp: string;
  data: Record<string, unknown>;
}

WebhookEventType

type WebhookEventType =
  | 'user.created'
  | 'user.updated'
  | 'user.deleted'
  | 'user.banned'
  | 'user.unbanned'
  | 'session.created'
  | 'session.ended'
  | 'session.revoked'
  | 'provider.linked'
  | 'provider.unlinked';

OAuth

OAuthProviderType

type OAuthProviderType =
  | 'google'
  | 'apple'
  | 'kakao'
  | 'naver'
  | 'facebook'
  | 'github'
  | 'discord'
  | 'x'
  | 'line'
  | 'microsoft';

Exported Constants

OAUTH_PROVIDERS

Readonly array of all supported OAuth provider identifiers.

const OAUTH_PROVIDERS: readonly OAuthProviderType[];
// ['google', 'apple', 'kakao', 'naver', 'facebook', 'github', 'discord', 'x', 'line', 'microsoft']

PROVIDER_DISPLAY_NAMES

Human-readable names for each provider.

const PROVIDER_DISPLAY_NAMES: Record<OAuthProviderType, string>;
// { google: 'Google', apple: 'Apple', github: 'GitHub', discord: 'Discord', ... }

PROVIDER_COLORS

Official brand colors (background and text) for each provider button.

const PROVIDER_COLORS: Record<OAuthProviderType, { bg: string; text: string }>;
// { google: { bg: '#ffffff', text: '#1f1f1f' }, kakao: { bg: '#FEE500', text: '#191919' }, ... }

WEBHOOK_EVENTS

Readonly array of all webhook event type strings.

const WEBHOOK_EVENTS: readonly WebhookEventType[];

API_KEY_PREFIXES

Prefix strings for Authon API keys.

const API_KEY_PREFIXES: {
  PUBLISHABLE_LIVE: 'pk_live_';
  PUBLISHABLE_TEST: 'pk_test_';
  SECRET_LIVE: 'sk_live_';
  SECRET_TEST: 'sk_test_';
};

DEFAULT_BRANDING

Default branding values applied when no project customization is set.

const DEFAULT_BRANDING: BrandingConfig;
// { primaryColorStart: '#7c3aed', primaryColorEnd: '#4f46e5', borderRadius: 12, ... }

DEFAULT_SESSION_CONFIG

Default session lifetime and concurrency settings.

const DEFAULT_SESSION_CONFIG: SessionConfig;
// { accessTokenTtl: 900, refreshTokenTtl: 604800, maxSessions: 5, singleSession: false }

Documentation

Full documentation: docs.authon.dev

License

MIT