@authtara/sdk
v1.0.4
Published
Authentication SDK for Identity Provider as a Service (Authtara) - JavaScript & React SDK
Downloads
18
Readme
@authtara/sdk
JavaScript & React SDK untuk Authentication dengan Identity Provider as a Service (Authtara).
📦 Installation
npm install @authtara/sdk
# or
bun add @authtara/sdk
# or
yarn add @authtara/sdk🚀 Quick Start
JavaScript SDK
import { AuthClient } from '@authtara/sdk';
// Initialize client
const auth = new AuthClient({
clientId: 'pk_abc123', // Required: Application client ID
apiUrl: 'https://api.yourdomain.com/widget/api', // Optional: Default '/widget/api'
});
// Sign up
const result = await auth.signUp({
email: '[email protected]',
password: 'SecurePass123!',
name: 'John Doe',
});
// Sign in
const signInResult = await auth.signIn({
email: '[email protected]',
password: 'SecurePass123!',
});
// Get current user
const user = await auth.getUser();
// Sign out
await auth.signOut();React SDK
import { AuthProvider, useAuth, SignIn, SignUp } from '@authtara/sdk/react';
import { AuthClient } from '@authtara/sdk';
// Initialize client
const authClient = new AuthClient({
clientId: 'pk_abc123',
apiUrl: 'https://api.yourdomain.com/widget/api',
});
// Wrap your app
function App() {
return (
<AuthProvider client={authClient}>
<YourApp />
</AuthProvider>
);
}
// Use in components
function LoginPage() {
const { signIn, user, isAuthenticated } = useAuth();
if (isAuthenticated) {
return <div>Welcome, {user?.name}!</div>;
}
return <SignIn onSuccess={result => console.log('Signed in!', result)} />;
}📚 API Reference
AuthClient
Methods
signUp(data: SignUpData): Promise<AuthResult>signIn(data: SignInData): Promise<AuthResult>signOut(): Promise<void>getUser(): Promise<User | null>refreshSession(): Promise<Session>isAuthenticated(): booleangetCurrentUser(): User | null
Events
on(event: 'signIn' | 'signOut' | 'userChanged' | 'error', handler: Function): voidoff(event: string, handler: Function): void
React Hooks
useAuth()- Main auth hookuseUser()- Get current useruseSignIn()- Sign in with loading stateuseSignUp()- Sign up with loading stateuseSignOut()- Sign out with loading state
React Components
<AuthProvider>- Context provider<SignIn>- Pre-built sign in form<SignUp>- Pre-built sign up form<UserButton>- User info & sign out button
🛠️ Development
Local Development Setup
SDK ini menggunakan Bun workspaces untuk development yang lebih efisien. Tidak perlu publish ke npm untuk testing perubahan lokal.
Prerequisites
- Bun >= 1.0.0
- TypeScript >= 5.0.0
Development Workflow
Build SDK:
bun run buildWatch mode (auto-rebuild saat perubahan):
bun run dev:watchType checking:
bun run type-checkLinting:
bun run lint bun run lint:fix # Auto-fix issues
Menggunakan di Project Lain (Workspace)
Untuk menggunakan SDK ini di project lain dalam workspace yang sama:
Pastikan workspace sudah dikonfigurasi di root
package.json:{ "workspaces": ["authtara-sdk", "your-app"] }Di project lain, gunakan workspace dependency:
{ "dependencies": { "@authtara/sdk": "workspace:*" } }Build SDK dan jalankan watch mode:
# Terminal 1: Watch SDK cd authtara-sdk bun run dev:watch # Terminal 2: Run your app cd your-app bun run dev
Publish ke NPM
Untuk publish ke npm registry:
Pastikan semua perubahan sudah di-build:
bun run buildUpdate version di
package.jsonjika perlu:# Manual atau menggunakan npm version npm version patch|minor|majorPublish:
npm publishScript
prepublishOnlyakan otomatis menjalankan build sebelum publish.
📖 Documentation
Full documentation available at: [Your Docs URL]
🤝 Contributing
Contributions welcome! Please read our contributing guidelines.
📄 License
MIT
