binoauth 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +359 -165
- package/dist/core/src/admin/client.d.ts +203 -0
- package/dist/core/src/admin/client.d.ts.map +1 -0
- package/dist/core/src/admin/client.js +391 -0
- package/dist/core/src/admin/client.js.map +1 -0
- package/dist/core/src/admin/index.d.ts +6 -0
- package/dist/core/src/admin/index.d.ts.map +1 -0
- package/dist/core/src/admin/index.js +5 -0
- package/dist/core/src/admin/index.js.map +1 -0
- package/dist/core/src/admin/types.d.ts +412 -0
- package/dist/core/src/admin/types.d.ts.map +1 -0
- package/dist/core/src/admin/types.js +5 -0
- package/dist/core/src/admin/types.js.map +1 -0
- package/dist/core/src/auth/client.d.ts +330 -0
- package/dist/core/src/auth/client.d.ts.map +1 -0
- package/dist/core/src/auth/client.js +408 -0
- package/dist/core/src/auth/client.js.map +1 -0
- package/dist/core/src/auth/error.d.ts +113 -0
- package/dist/core/src/auth/error.d.ts.map +1 -0
- package/dist/core/src/auth/error.js +257 -0
- package/dist/core/src/auth/error.js.map +1 -0
- package/dist/core/src/auth/flows/base-flow.d.ts +98 -0
- package/dist/core/src/auth/flows/base-flow.d.ts.map +1 -0
- package/dist/core/src/auth/flows/base-flow.js +182 -0
- package/dist/core/src/auth/flows/base-flow.js.map +1 -0
- package/dist/core/src/auth/flows/magic-link.d.ts +175 -0
- package/dist/core/src/auth/flows/magic-link.d.ts.map +1 -0
- package/dist/core/src/auth/flows/magic-link.js +228 -0
- package/dist/core/src/auth/flows/magic-link.js.map +1 -0
- package/dist/core/src/auth/flows/mfa.d.ts +81 -0
- package/dist/core/src/auth/flows/mfa.d.ts.map +1 -0
- package/dist/core/src/auth/flows/mfa.js +103 -0
- package/dist/core/src/auth/flows/mfa.js.map +1 -0
- package/dist/core/src/auth/flows/otp.d.ts +172 -0
- package/dist/core/src/auth/flows/otp.d.ts.map +1 -0
- package/dist/core/src/auth/flows/otp.js +222 -0
- package/dist/core/src/auth/flows/otp.js.map +1 -0
- package/dist/core/src/auth/flows/password.d.ts +242 -0
- package/dist/core/src/auth/flows/password.d.ts.map +1 -0
- package/dist/core/src/auth/flows/password.js +344 -0
- package/dist/core/src/auth/flows/password.js.map +1 -0
- package/dist/core/src/auth/flows/social.d.ts +209 -0
- package/dist/core/src/auth/flows/social.d.ts.map +1 -0
- package/dist/core/src/auth/flows/social.js +284 -0
- package/dist/core/src/auth/flows/social.js.map +1 -0
- package/dist/core/src/auth/index.d.ts +19 -0
- package/dist/core/src/auth/index.d.ts.map +1 -0
- package/dist/core/src/auth/index.js +32 -0
- package/dist/core/src/auth/index.js.map +1 -0
- package/dist/core/src/auth/types.d.ts +151 -0
- package/dist/core/src/auth/types.d.ts.map +1 -0
- package/dist/core/src/auth/types.js +7 -0
- package/dist/core/src/auth/types.js.map +1 -0
- package/dist/core/src/index.d.ts +53 -49
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/index.js +61 -343
- package/dist/core/src/index.js.map +1 -1
- package/dist/core/src/oauth/client.d.ts +322 -0
- package/dist/core/src/oauth/client.d.ts.map +1 -0
- package/dist/core/src/oauth/client.js +491 -0
- package/dist/core/src/oauth/client.js.map +1 -0
- package/dist/core/src/oauth/error.d.ts +18 -0
- package/dist/core/src/oauth/error.d.ts.map +1 -0
- package/dist/core/src/oauth/error.js +24 -0
- package/dist/core/src/oauth/error.js.map +1 -0
- package/dist/core/src/oauth/flows/authorization-code.d.ts +122 -0
- package/dist/core/src/oauth/flows/authorization-code.d.ts.map +1 -0
- package/dist/core/src/oauth/flows/authorization-code.js +278 -0
- package/dist/core/src/oauth/flows/authorization-code.js.map +1 -0
- package/dist/core/src/oauth/flows/base-flow.d.ts +17 -0
- package/dist/core/src/oauth/flows/base-flow.d.ts.map +1 -0
- package/dist/core/src/oauth/flows/base-flow.js +107 -0
- package/dist/core/src/oauth/flows/base-flow.js.map +1 -0
- package/dist/core/src/oauth/flows/client-credentials.d.ts +72 -0
- package/dist/core/src/oauth/flows/client-credentials.d.ts.map +1 -0
- package/dist/core/src/oauth/flows/client-credentials.js +100 -0
- package/dist/core/src/oauth/flows/client-credentials.js.map +1 -0
- package/dist/core/src/oauth/flows/device-code.d.ts +108 -0
- package/dist/core/src/oauth/flows/device-code.d.ts.map +1 -0
- package/dist/core/src/oauth/flows/device-code.js +193 -0
- package/dist/core/src/oauth/flows/device-code.js.map +1 -0
- package/dist/core/src/oauth/flows/refresh-token.d.ts +59 -0
- package/dist/core/src/oauth/flows/refresh-token.d.ts.map +1 -0
- package/dist/core/src/oauth/flows/refresh-token.js +105 -0
- package/dist/core/src/oauth/flows/refresh-token.js.map +1 -0
- package/dist/core/src/oauth/index.d.ts +12 -0
- package/dist/core/src/oauth/index.d.ts.map +1 -0
- package/dist/core/src/oauth/index.js +11 -0
- package/dist/core/src/oauth/index.js.map +1 -0
- package/dist/core/src/oauth/storage/encryption.d.ts +12 -0
- package/dist/core/src/oauth/storage/encryption.d.ts.map +1 -0
- package/dist/core/src/oauth/storage/encryption.js +76 -0
- package/dist/core/src/oauth/storage/encryption.js.map +1 -0
- package/dist/core/src/oauth/storage/index.d.ts +201 -0
- package/dist/core/src/oauth/storage/index.d.ts.map +1 -0
- package/dist/core/src/oauth/storage/index.js +322 -0
- package/dist/core/src/oauth/storage/index.js.map +1 -0
- package/dist/core/src/oauth/storage/strategies.d.ts +34 -0
- package/dist/core/src/oauth/storage/strategies.d.ts.map +1 -0
- package/dist/core/src/oauth/storage/strategies.js +100 -0
- package/dist/core/src/oauth/storage/strategies.js.map +1 -0
- package/dist/core/src/oauth/types.d.ts +261 -0
- package/dist/core/src/oauth/types.d.ts.map +1 -0
- package/dist/core/src/oauth/types.js +39 -0
- package/dist/core/src/oauth/types.js.map +1 -0
- package/dist/core/src/oauth/utils.d.ts +56 -0
- package/dist/core/src/oauth/utils.d.ts.map +1 -0
- package/dist/core/src/oauth/utils.js +140 -0
- package/dist/core/src/oauth/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
@@ -0,0 +1,330 @@
|
|
1
|
+
/**
|
2
|
+
* Unified BinoAuth authentication client
|
3
|
+
*
|
4
|
+
* Provides a single interface for all authentication methods including
|
5
|
+
* OAuth, password, magic link, OTP, MFA, and social authentication.
|
6
|
+
*/
|
7
|
+
import type { BinoAuthConfig, LoginRequest, SignupRequest, AuthResult, User, PasswordResetRequest, PasswordResetData, SocialProvider, MFAMethod } from "./types";
|
8
|
+
import { BinoAuthOAuth } from "../oauth/client";
|
9
|
+
import { PasswordFlow } from "./flows/password";
|
10
|
+
import { MagicLinkFlow } from "./flows/magic-link";
|
11
|
+
import { OTPFlow } from "./flows/otp";
|
12
|
+
import { MFAFlow } from "./flows/mfa";
|
13
|
+
import { SocialFlow } from "./flows/social";
|
14
|
+
/**
|
15
|
+
* Unified BinoAuth authentication client
|
16
|
+
*
|
17
|
+
* Provides a comprehensive authentication solution with multiple flows
|
18
|
+
* and methods. This is the main entry point for most authentication needs.
|
19
|
+
*
|
20
|
+
* @example
|
21
|
+
* ```typescript
|
22
|
+
* import { BinoAuthClient } from 'binoauth';
|
23
|
+
*
|
24
|
+
* const auth = new BinoAuthClient({
|
25
|
+
* issuer: 'https://auth.binoauth.com',
|
26
|
+
* clientId: 'your_client_id',
|
27
|
+
* redirectUri: 'https://yourapp.com/callback',
|
28
|
+
* apiKey: 'your_api_key'
|
29
|
+
* });
|
30
|
+
*
|
31
|
+
* // Password authentication
|
32
|
+
* const result = await auth.loginWithPassword('user@example.com', 'password123');
|
33
|
+
*
|
34
|
+
* // Magic link authentication
|
35
|
+
* await auth.sendMagicLink('user@example.com', 'https://yourapp.com/dashboard');
|
36
|
+
*
|
37
|
+
* // OAuth authentication
|
38
|
+
* const oauthUrl = await auth.getOAuthLoginUrl();
|
39
|
+
* window.location.href = oauthUrl;
|
40
|
+
*
|
41
|
+
* // Social authentication
|
42
|
+
* const googleUrl = await auth.getSocialLoginUrl('google');
|
43
|
+
* window.location.href = googleUrl;
|
44
|
+
* ```
|
45
|
+
*/
|
46
|
+
export declare class BinoAuthClient {
|
47
|
+
private config;
|
48
|
+
readonly oauth: BinoAuthOAuth;
|
49
|
+
readonly password: PasswordFlow;
|
50
|
+
readonly magicLink: MagicLinkFlow;
|
51
|
+
readonly otp: OTPFlow;
|
52
|
+
readonly mfa: MFAFlow;
|
53
|
+
readonly social: SocialFlow;
|
54
|
+
/**
|
55
|
+
* Creates a new BinoAuth client instance
|
56
|
+
*
|
57
|
+
* @param config - BinoAuth configuration
|
58
|
+
*
|
59
|
+
* @example
|
60
|
+
* ```typescript
|
61
|
+
* // Minimal configuration
|
62
|
+
* const auth = new BinoAuthClient({
|
63
|
+
* issuer: 'https://auth.binoauth.com',
|
64
|
+
* clientId: 'your_client_id'
|
65
|
+
* });
|
66
|
+
*
|
67
|
+
* // Full configuration
|
68
|
+
* const auth = new BinoAuthClient({
|
69
|
+
* issuer: 'https://auth.binoauth.com',
|
70
|
+
* clientId: 'your_client_id',
|
71
|
+
* redirectUri: 'https://yourapp.com/callback',
|
72
|
+
* scope: 'openid profile email',
|
73
|
+
* apiKey: 'your_api_key',
|
74
|
+
* tenant: 'your_tenant_id',
|
75
|
+
* enableMFA: true
|
76
|
+
* });
|
77
|
+
* ```
|
78
|
+
*/
|
79
|
+
constructor(config: BinoAuthConfig);
|
80
|
+
/**
|
81
|
+
* Validates the client configuration
|
82
|
+
*
|
83
|
+
* @throws {AuthError} When configuration is invalid
|
84
|
+
*/
|
85
|
+
private validateConfig;
|
86
|
+
/**
|
87
|
+
* Generates a default encryption key for token storage
|
88
|
+
*
|
89
|
+
* @returns Encryption key
|
90
|
+
*/
|
91
|
+
private generateEncryptionKey;
|
92
|
+
/**
|
93
|
+
* Authenticates a user with email and password
|
94
|
+
*
|
95
|
+
* @param email - User's email address
|
96
|
+
* @param password - User's password
|
97
|
+
* @param rememberMe - Whether to remember the user
|
98
|
+
* @returns Promise resolving to authentication result
|
99
|
+
*
|
100
|
+
* @example
|
101
|
+
* ```typescript
|
102
|
+
* try {
|
103
|
+
* const result = await auth.loginWithPassword(
|
104
|
+
* 'user@example.com',
|
105
|
+
* 'password123',
|
106
|
+
* true // remember me
|
107
|
+
* );
|
108
|
+
*
|
109
|
+
* if (result.success) {
|
110
|
+
* console.log('Login successful:', result.user);
|
111
|
+
* }
|
112
|
+
* } catch (error) {
|
113
|
+
* if (error.code === AuthErrorCode.MFA_REQUIRED) {
|
114
|
+
* // Handle MFA challenge
|
115
|
+
* const challenge = error.details.mfaChallenge;
|
116
|
+
* await auth.sendMFAChallenge(challenge.challengeId, 'sms');
|
117
|
+
* }
|
118
|
+
* }
|
119
|
+
* ```
|
120
|
+
*/
|
121
|
+
loginWithPassword(email: string, password: string, rememberMe?: boolean): Promise<AuthResult>;
|
122
|
+
/**
|
123
|
+
* Authenticates a user with credentials object
|
124
|
+
*
|
125
|
+
* @param credentials - Login credentials
|
126
|
+
* @returns Promise resolving to authentication result
|
127
|
+
*/
|
128
|
+
loginWithCredentials(credentials: LoginRequest): Promise<AuthResult>;
|
129
|
+
/**
|
130
|
+
* Registers a new user account
|
131
|
+
*
|
132
|
+
* @param userData - User registration data
|
133
|
+
* @returns Promise resolving to authentication result
|
134
|
+
*
|
135
|
+
* @example
|
136
|
+
* ```typescript
|
137
|
+
* const result = await auth.register({
|
138
|
+
* email: 'newuser@example.com',
|
139
|
+
* password: 'securepassword123',
|
140
|
+
* name: 'John Doe',
|
141
|
+
* acceptTerms: true
|
142
|
+
* });
|
143
|
+
* ```
|
144
|
+
*/
|
145
|
+
register(userData: SignupRequest): Promise<AuthResult>;
|
146
|
+
/**
|
147
|
+
* Sends a magic link to the user's email
|
148
|
+
*
|
149
|
+
* @param email - User's email address
|
150
|
+
* @param returnTo - URL to redirect to after authentication
|
151
|
+
* @returns Promise resolving when magic link is sent
|
152
|
+
*
|
153
|
+
* @example
|
154
|
+
* ```typescript
|
155
|
+
* await auth.sendMagicLink('user@example.com', 'https://myapp.com/dashboard');
|
156
|
+
* console.log('Magic link sent! Check your email.');
|
157
|
+
* ```
|
158
|
+
*/
|
159
|
+
sendMagicLink(email: string, returnTo?: string): Promise<void>;
|
160
|
+
/**
|
161
|
+
* Verifies a magic link token
|
162
|
+
*
|
163
|
+
* @param token - Magic link token
|
164
|
+
* @returns Promise resolving to authentication result
|
165
|
+
*/
|
166
|
+
verifyMagicLink(token: string): Promise<AuthResult>;
|
167
|
+
/**
|
168
|
+
* Sends an OTP to the user's email
|
169
|
+
*
|
170
|
+
* @param email - User's email address
|
171
|
+
* @returns Promise resolving when OTP is sent
|
172
|
+
*
|
173
|
+
* @example
|
174
|
+
* ```typescript
|
175
|
+
* await auth.sendEmailOTP('user@example.com');
|
176
|
+
* console.log('Verification code sent to your email');
|
177
|
+
* ```
|
178
|
+
*/
|
179
|
+
/**
|
180
|
+
* Note: Email OTP is not supported. Use sendPhoneOTP instead.
|
181
|
+
* @deprecated Use sendPhoneOTP for SMS OTP
|
182
|
+
*/
|
183
|
+
sendEmailOTP(email: string): Promise<void>;
|
184
|
+
/**
|
185
|
+
* Sends an OTP to the user's phone
|
186
|
+
*
|
187
|
+
* @param phone - User's phone number
|
188
|
+
* @returns Promise resolving when OTP is sent
|
189
|
+
*
|
190
|
+
* @example
|
191
|
+
* ```typescript
|
192
|
+
* await auth.sendPhoneOTP('+1234567890');
|
193
|
+
* console.log('Verification code sent to your phone');
|
194
|
+
* ```
|
195
|
+
*/
|
196
|
+
sendPhoneOTP(phone: string): Promise<void>;
|
197
|
+
/**
|
198
|
+
* Verifies an OTP code
|
199
|
+
*
|
200
|
+
* @param code - OTP code
|
201
|
+
* @param method - OTP method ('email' or 'sms')
|
202
|
+
* @returns Promise resolving to authentication result
|
203
|
+
*
|
204
|
+
* @example
|
205
|
+
* ```typescript
|
206
|
+
* const result = await auth.verifyOTP('123456', 'email');
|
207
|
+
* if (result.success) {
|
208
|
+
* console.log('OTP verification successful');
|
209
|
+
* }
|
210
|
+
* ```
|
211
|
+
*/
|
212
|
+
verifyOTP(code: string): Promise<AuthResult>;
|
213
|
+
/**
|
214
|
+
* Gets the OAuth authorization URL
|
215
|
+
*
|
216
|
+
* @returns Promise resolving to authorization URL
|
217
|
+
*
|
218
|
+
* @example
|
219
|
+
* ```typescript
|
220
|
+
* const oauthUrl = await auth.getOAuthLoginUrl();
|
221
|
+
* window.location.href = oauthUrl;
|
222
|
+
* ```
|
223
|
+
*/
|
224
|
+
getOAuthLoginUrl(): Promise<string>;
|
225
|
+
/**
|
226
|
+
* Handles OAuth callback
|
227
|
+
*
|
228
|
+
* @param code - Authorization code
|
229
|
+
* @param state - State parameter
|
230
|
+
* @returns Promise resolving when callback is handled
|
231
|
+
*/
|
232
|
+
handleOAuthCallback(code: string, state: string): Promise<void>;
|
233
|
+
/**
|
234
|
+
* Gets social login URL for a provider
|
235
|
+
*
|
236
|
+
* @param provider - Social provider
|
237
|
+
* @param request - Optional social auth request
|
238
|
+
* @returns Promise resolving to authorization URL
|
239
|
+
*
|
240
|
+
* @example
|
241
|
+
* ```typescript
|
242
|
+
* const googleUrl = await auth.getSocialLoginUrl('google', {
|
243
|
+
* returnTo: 'https://myapp.com/dashboard'
|
244
|
+
* });
|
245
|
+
* window.location.href = googleUrl;
|
246
|
+
* ```
|
247
|
+
*/
|
248
|
+
getSocialLoginUrl(provider: SocialProvider, returnTo: string, redirectUri?: string): Promise<string>;
|
249
|
+
/**
|
250
|
+
* Handles social authentication callback
|
251
|
+
*
|
252
|
+
* @param provider - Social provider
|
253
|
+
* @param code - Authorization code
|
254
|
+
* @param state - State parameter
|
255
|
+
* @returns Promise resolving to authentication result
|
256
|
+
*/
|
257
|
+
handleSocialCallback(provider: SocialProvider, code: string, state: string, link?: boolean): Promise<AuthResult>;
|
258
|
+
/**
|
259
|
+
* Sends an MFA challenge
|
260
|
+
*
|
261
|
+
* @param challengeId - MFA challenge ID
|
262
|
+
* @param method - MFA method
|
263
|
+
* @returns Promise resolving when challenge is sent
|
264
|
+
*/
|
265
|
+
/**
|
266
|
+
* Note: MFA challenge sending is not available in current tenant-sdk.
|
267
|
+
* @deprecated Use verifyMFA instead
|
268
|
+
*/
|
269
|
+
sendMFAChallenge(challengeId: string, method: MFAMethod): Promise<void>;
|
270
|
+
/**
|
271
|
+
* Verifies an MFA challenge
|
272
|
+
*
|
273
|
+
* @param challengeId - MFA challenge ID
|
274
|
+
* @param code - Verification code
|
275
|
+
* @param method - MFA method
|
276
|
+
* @returns Promise resolving to authentication result
|
277
|
+
*/
|
278
|
+
verifyMFA(code: string, sessionId: string): Promise<AuthResult>;
|
279
|
+
/**
|
280
|
+
* Requests password reset
|
281
|
+
*
|
282
|
+
* @param request - Password reset request
|
283
|
+
* @returns Promise resolving when reset request is sent
|
284
|
+
*/
|
285
|
+
requestPasswordReset(request: PasswordResetRequest): Promise<void>;
|
286
|
+
/**
|
287
|
+
* Resets password with token
|
288
|
+
*
|
289
|
+
* @param resetData - Password reset data
|
290
|
+
* @returns Promise resolving to authentication result
|
291
|
+
*/
|
292
|
+
resetPassword(resetData: PasswordResetData): Promise<AuthResult>;
|
293
|
+
/**
|
294
|
+
* Gets current access token
|
295
|
+
*
|
296
|
+
* @returns Promise resolving to access token or null
|
297
|
+
*/
|
298
|
+
getAccessToken(): Promise<string | null>;
|
299
|
+
/**
|
300
|
+
* Checks if user is authenticated
|
301
|
+
*
|
302
|
+
* @returns Promise resolving to authentication status
|
303
|
+
*/
|
304
|
+
isAuthenticated(): Promise<boolean>;
|
305
|
+
/**
|
306
|
+
* Gets current user information
|
307
|
+
*
|
308
|
+
* @returns Promise resolving to user info or null
|
309
|
+
*/
|
310
|
+
getUserInfo(): Promise<User | null>;
|
311
|
+
/**
|
312
|
+
* Refreshes access tokens
|
313
|
+
*
|
314
|
+
* @returns Promise resolving when tokens are refreshed
|
315
|
+
*/
|
316
|
+
refreshTokens(): Promise<void>;
|
317
|
+
/**
|
318
|
+
* Logs out the user
|
319
|
+
*
|
320
|
+
* @returns Promise resolving when logout is complete
|
321
|
+
*/
|
322
|
+
logout(): Promise<void>;
|
323
|
+
/**
|
324
|
+
* Gets logout URL
|
325
|
+
*
|
326
|
+
* @returns Promise resolving to logout URL
|
327
|
+
*/
|
328
|
+
getLogoutUrl(): Promise<string>;
|
329
|
+
}
|
330
|
+
//# sourceMappingURL=client.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/auth/client.ts"],"names":[],"mappings":"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"}
|