Edit on GitHub

Types and Interfaces

This page provides a comprehensive reference for all TypeScript types and interfaces used in Svelte Guardian.

Core Types

GuardianAuthConfig

The main configuration interface for setting up Svelte Guardian.

interface GuardianAuthConfig { database: DatabaseConfig; providers: ProvidersConfig; security?: SecurityConfig; pages?: PagesConfig; events?: EventsConfig; callbacks?: CallbacksConfig; }

User

Represents a user in the system.

interface User { id: string; name?: string; email?: string; emailVerified?: Date; image?: string; role?: string; [key: string]: any; // Additional custom fields }

Session

Represents a user session.

interface Session { user: User; expires: Date; sessionToken: string; }

Account

Represents an OAuth account linked to a user.

interface Account { id: string; userId: string; provider: string; providerAccountId: string; type: string; refresh_token?: string; access_token?: string; expires_at?: number; token_type?: string; scope?: string; id_token?: string; session_state?: string; }

Configuration Types

DatabaseConfig

Configuration for the database backend.

interface DatabaseConfig { type: 'prisma' | 'mongoose' | 'custom'; url?: string; adapter?: Adapter; // Additional database-specific options }

ProvidersConfig

Configuration for authentication providers.

interface ProvidersConfig { credentials?: CredentialsProviderConfig; google?: OAuthProviderConfig; github?: OAuthProviderConfig; facebook?: OAuthProviderConfig; microsoft?: OAuthProviderConfig; [key: string]: ProviderConfig | undefined; } interface CredentialsProviderConfig { enabled?: boolean; allowRegistration?: boolean; requireEmailVerification?: boolean; additionalUserFields?: string[]; } interface OAuthProviderConfig { enabled?: boolean; clientId?: string; clientSecret?: string; scope?: string[]; profile?: (profile: any) => User; }

SecurityConfig

Configuration for security features.

interface SecurityConfig { level?: 'strict' | 'moderate' | 'relaxed'; maxLoginAttempts?: number; lockoutDuration?: number; emailVerification?: EmailVerificationOptions; passwordReset?: PasswordResetOptions; twoFactorAuth?: TwoFactorAuthOptions; emailProvider?: EmailProviderConfig; rateLimiting: RateLimitingConfig; routeProtection?: RouteProtectionConfig; passwordPolicy?: PasswordPolicyConfig; }

EmailVerificationOptions

Configuration for email verification.

interface EmailVerificationOptions { method: 'link' | 'otp'; otpLength?: number; otpExpiration?: number; tokenExpiration?: number; sendEmailOnRegistration?: boolean; }

PasswordResetOptions

Configuration for password reset functionality.

interface PasswordResetOptions { tokenExpiration: number; tokenLength?: number; }

TwoFactorAuthOptions

Configuration for two-factor authentication.

interface TwoFactorAuthOptions { method: 'totp' | 'email'; allowBackupCodes?: boolean; backupCodeCount?: number; issuer?: string; }

RateLimitingConfig

Configuration for rate limiting.

interface RateLimitingConfig { enabled?: boolean; strategy?: 'memory' | 'redis' | 'upstash-redis'; requestsPerMinute?: number; blockDuration?: number; windowMs?: number; maxRequests?: number; redisConfig?: RedisConfig; keyGenerator?: (event: RequestEvent) => string; }

RouteProtectionConfig

Configuration for route protection.

interface RouteProtectionConfig { protectedRoutes?: { [route: string]: { allowedRoles?: string[]; authenticated?: boolean; redirectPath?: string; }; }; publicRoutes?: { [route: string]: { redirectPath?: string; }; }; redirectPath?: string; authenticatedRedirect?: string; roleKey?: string; }

PagesConfig

Configuration for custom page paths.

interface PagesConfig { signIn?: string; signUp?: string; error?: string; verifyEmail?: string; resetPassword?: string; }

EventsConfig

Configuration for event handlers.

interface EventsConfig { createUser?: (user: User) => void | Promise; signIn?: (user: User) => void | Promise; signOut?: (user: User) => void | Promise; linkAccount?: (account: Account) => void | Promise; updateUser?: (user: User) => void | Promise; session?: (session: Session) => void | Promise; }

CallbacksConfig

Configuration for authentication callbacks.

interface CallbacksConfig { signIn?: (params: { user: User, account: Account, profile: any }) => boolean | Promise; redirect?: (params: { url: string, baseUrl: string }) => string | Promise; session?: (params: { session: Session, user: User }) => Session | Promise; jwt?: (params: { token: JWT, user: User, account: Account }) => JWT | Promise; }

Email Provider Types

EmailProviderConfig

Configuration for email providers.

interface EmailProviderConfig { type: 'nodemailer' | 'sendgrid' | 'ses' | 'resend' | 'log'; from: string; service?: string; host?: string; port?: number; secure?: boolean; auth?: EmailAuthConfig; templates?: EmailTemplatesConfig; }

EmailTemplatesConfig

Configuration for email templates.

interface EmailTemplatesConfig { verification?: { subject?: string; textTemplate?: string; htmlTemplate?: string; }; passwordReset?: { subject?: string; textTemplate?: string; htmlTemplate?: string; }; twoFactorAuth?: { subject?: string; textTemplate?: string; htmlTemplate?: string; }; }

Result Types

SignInResult

Result of a sign-in operation.

interface SignInResult { success: boolean; user?: User; error?: string; url?: string; }

SignOutResult

Result of a sign-out operation.

interface SignOutResult { success: boolean; error?: string; url?: string; }

CreateUserResult

Result of a user creation operation.

interface CreateUserResult { success: boolean; user?: User; error?: string; }

VerificationResult

Result of an email verification operation.

interface VerificationResult { success: boolean; error?: string; data?: string; }

PasswordResetResult

Result of a password reset operation.

interface PasswordResetResult { success: boolean; error?: string; }

Utility Types

JWT

JSON Web Token structure.

interface JWT { name?: string; email?: string; picture?: string; sub?: string; iat?: number; exp?: number; jti?: string; [key: string]: any; }

RequestEvent

SvelteKit request event.

interface RequestEvent { request: Request; url: URL; params: Record; locals: App.Locals; route: { id: string; }; getClientAddress(): string; setHeaders(headers: Record): void; }
Share this page