unified-auth-js
v1.0.2
Published
A simple way to auth service
Downloads
15
Readme
Unified Auth Service
A TypeScript-based wrapper for multiple authentication providers, offering a unified interface for your authentication needs.
Overview
This project provides a seamless integration layer for various authentication providers, allowing developers to switch between different auth solutions without changing their application code. Currently supported providers include:
- Supabase
- Appwrite
- NextAuth
- Lucia
- Clerk
Features
- Unified Interface: Use a single set of methods for all supported auth providers.
- Easy Provider Switching: Change your auth provider with minimal code changes.
- TypeScript Support: Fully typed for better developer experience and code safety.
- Extensible: Easily add support for new auth providers.
Installation
npm install unified-auth-js
Usage
- Import the library:
import { UnifiedAuth } from 'unified-auth-js';
- Initialize with your chosen provider:
const auth = new UnifiedAuth({
provider: 'supabase',
config: {
// Provider-specific configuration
}
});
- Use the unified methods:
// Sign up
await auth.signUp(email, password);
// Sign in
await auth.signIn(email, password);
// Sign out
await auth.signOut();
// Get current user
const user = await auth.getCurrentUser();
Supported Methods
signUp(email: string, password: string): Promise<User>
signIn(email: string, password: string): Promise<User>
signOut(): Promise<void>
getCurrentUser(): Promise<User | null>
resetPassword(email: string): Promise<void>
updateUser(data: Partial<User>): Promise<User>
deleteUser(): Promise<void>
Adding a New Provider
To add support for a new authentication provider:
- Create a new file in the
src/providers
directory (e.g.,newProvider.ts
). - Implement the
AuthProvider
interface. - Add the new provider to the
ProviderType
union insrc/types.ts
. - Update the provider factory in
src/UnifiedAuth.ts
.
Contributing
Contributions are welcome! Please read our Contributing Guide for more information.
License
This project is licensed under the MIT License - see the LICENSE file for details.