UNPKG

sdk-simple-auth

Version:

Universal JavaScript/TypeScript authentication SDK with multi-backend support, automatic token refresh, and React integration

154 lines 4.21 kB
export interface AuthConfig { authServiceUrl: string; endpoints?: { login?: string; register?: string; refresh?: string; logout?: string; profile?: string; }; storage?: { type?: 'localStorage' | 'indexedDB'; dbName?: string; dbVersion?: number; storeName?: string; tokenKey?: string; refreshTokenKey?: string; userKey?: string; }; tokenRefresh?: { enabled?: boolean; bufferTime?: number; maxRetries?: number; minimumTokenLifetime?: number; gracePeriod?: number; }; httpClient?: HttpClient; backend?: { type?: 'node-express' | 'laravel-sanctum' | 'jwt-standard' | 'custom'; userSearchPaths?: string[]; fieldMappings?: Record<string, string[]>; preserveOriginalData?: boolean; }; } export interface HttpClient { post(url: string, data?: any, config?: any): Promise<any>; get(url: string, config?: any): Promise<any>; put(url: string, data?: any, config?: any): Promise<any>; delete(url: string, config?: any): Promise<any>; } export interface AuthTokens { accessToken: string; refreshToken?: string; expiresIn?: number; expiresAt?: string | number; tokenType?: string; _originalTokenResponse?: any; _backendType?: string; _tokenFormat?: 'jwt' | 'opaque' | 'sanctum'; } export interface AuthUser { id: string; email?: string; name?: string; roles?: string[]; firstName?: string; lastName?: string; username?: string; role?: string | string[]; permissions?: string[]; isActive?: boolean; profile?: any; email_verified_at?: string; created_at?: string; updated_at?: string; sucursales?: Array<{ id: number; sucursal: string; sigla: string; rol: string; }>; full_name?: string; lastLogin?: string | Date; createdAt?: string | Date; updatedAt?: string | Date; _id?: string; sub?: string; aud?: string | string[]; iss?: string; exp?: number; iat?: number; _originalUserResponse?: any; _backendType?: string; _extractionMethod?: 'direct' | 'nested' | 'jwt-parsed' | 'scattered'; [key: string]: any; } export interface LoginCredentials { usuario?: string; clave?: string; code?: string; email?: string; password?: string; username?: string; phone?: string; device_name?: string; [key: string]: any; } export interface RegisterData { usuario?: string; clave?: string; code?: string; email: string; password: string; name?: string; firstName?: string; lastName?: string; username?: string; phone?: string; [key: string]: any; } export interface AuthState { isAuthenticated: boolean; user: AuthUser | null; tokens: AuthTokens | null; loading: boolean; error: string | null; isRefreshing?: boolean; lastActivity?: number; sessionExpiry?: number; backendType?: string; capabilities?: { canRefresh: boolean; hasProfile: boolean; supportsOTP: boolean; supportsBiometric: boolean; }; } export interface AuthCallbacks { onAuthStateChanged?: (state: AuthState) => void; onTokenRefresh?: (tokens: AuthTokens) => void; onLogin?: (user: AuthUser, tokens: AuthTokens) => void; onLogout?: () => void; onError?: (error: string) => void; onTokenExpired?: () => void; onSessionRestored?: (user: AuthUser) => void; onRefreshFailed?: (error: string) => void; onUserUpdated?: (user: AuthUser) => void; onBackendDetected?: (backendType: string) => void; } export interface ExtendedSessionInfo { isValid: boolean; user: AuthUser | null; tokens: AuthTokens | null; tokenType: string | null; tokenFormat: 'jwt' | 'opaque' | 'sanctum' | null; expiresIn: number | null; refreshAvailable: boolean; canRefresh: boolean; sessionId: string | null; backendType: string | null; storedAt: number | null; lastRefreshed: number | null; originalResponse: any; } //# sourceMappingURL=index.d.ts.map