cocobase 1.3.5 → 1.5.0

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.
Files changed (45) hide show
  1. package/dist/cjs/core/auth.d.ts +165 -62
  2. package/dist/cjs/core/auth.d.ts.map +1 -1
  3. package/dist/cjs/core/auth.js +229 -64
  4. package/dist/cjs/core/auth.js.map +1 -1
  5. package/dist/cjs/core/core.d.ts +73 -141
  6. package/dist/cjs/core/core.d.ts.map +1 -1
  7. package/dist/cjs/core/core.js +34 -160
  8. package/dist/cjs/core/core.js.map +1 -1
  9. package/dist/cjs/index.d.ts +4 -1
  10. package/dist/cjs/index.d.ts.map +1 -1
  11. package/dist/cjs/index.js +3 -1
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/realtime/multiplayer.d.ts +228 -0
  14. package/dist/cjs/realtime/multiplayer.d.ts.map +1 -0
  15. package/dist/cjs/realtime/multiplayer.js +404 -0
  16. package/dist/cjs/realtime/multiplayer.js.map +1 -0
  17. package/dist/cjs/types/params.d.ts +95 -0
  18. package/dist/cjs/types/params.d.ts.map +1 -0
  19. package/dist/cjs/types/params.js +7 -0
  20. package/dist/cjs/types/params.js.map +1 -0
  21. package/dist/cjs/types/types.d.ts +31 -1
  22. package/dist/cjs/types/types.d.ts.map +1 -1
  23. package/dist/core/auth.d.ts +165 -62
  24. package/dist/core/auth.d.ts.map +1 -1
  25. package/dist/core/auth.js +229 -64
  26. package/dist/core/auth.js.map +1 -1
  27. package/dist/core/core.d.ts +73 -141
  28. package/dist/core/core.d.ts.map +1 -1
  29. package/dist/core/core.js +34 -160
  30. package/dist/core/core.js.map +1 -1
  31. package/dist/index.d.ts +4 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +1 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/realtime/multiplayer.d.ts +228 -0
  36. package/dist/realtime/multiplayer.d.ts.map +1 -0
  37. package/dist/realtime/multiplayer.js +399 -0
  38. package/dist/realtime/multiplayer.js.map +1 -0
  39. package/dist/types/params.d.ts +95 -0
  40. package/dist/types/params.d.ts.map +1 -0
  41. package/dist/types/params.js +6 -0
  42. package/dist/types/params.js.map +1 -0
  43. package/dist/types/types.d.ts +31 -1
  44. package/dist/types/types.d.ts.map +1 -1
  45. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import { CocobaseConfig, AppUser, AppUserList, Query, AuthCallbacks } from "../types/types.js";
1
+ import { CocobaseConfig, AppUser, AppUserList, Query, AuthCallbacks, Response, LoginResult } from "../types/types.js";
2
+ import { RegisterParams, RegisterWithFilesParams, LoginParams, UpdateUserParams, UpdateUserWithFilesParams, GoogleLoginParams, GithubLoginParams, Verify2FAParams } from "../types/params.js";
2
3
  /**
3
4
  * Authentication handler for Cocobase client.
4
5
  *
@@ -15,7 +16,7 @@ export declare class AuthHandler {
15
16
  private baseURL;
16
17
  private apiKey?;
17
18
  private token?;
18
- private user?;
19
+ user?: AppUser;
19
20
  private callbacks;
20
21
  /**
21
22
  * Creates a new AuthHandler instance.
@@ -135,34 +136,50 @@ export declare class AuthHandler {
135
136
  /**
136
137
  * Authenticates a user with email and password.
137
138
  *
138
- * @param email - User's email address
139
- * @param password - User's password
140
- * @returns Promise that resolves when login is complete
139
+ * @param params - Login parameters
140
+ * @returns Promise resolving to LoginResult indicating success or 2FA requirement
141
141
  *
142
142
  * @example
143
143
  * ```typescript
144
- * await db.auth.login('user@example.com', 'password123');
145
- * console.log('Logged in as:', db.auth.getUser()?.email);
144
+ * const result = await db.auth.login({
145
+ * email: 'user@example.com',
146
+ * password: 'password123'
147
+ * });
148
+ *
149
+ * if (result.requires_2fa) {
150
+ * // Show 2FA input form to user
151
+ * console.log(result.message); // "2FA code sent to your email"
152
+ * // Later, call verify2FALogin with the code
153
+ * } else {
154
+ * // Login successful
155
+ * console.log('Logged in as:', result.user?.email);
156
+ * }
146
157
  * ```
147
158
  */
148
- login(email: string, password: string): Promise<void>;
159
+ login(params: LoginParams): Promise<LoginResult>;
149
160
  /**
150
161
  * Registers a new user with email, password, and optional additional data.
151
162
  *
152
- * @param email - User's email address
153
- * @param password - User's password
154
- * @param data - Optional additional user data
155
- * @returns Promise that resolves when registration is complete
163
+ * @param params - Registration parameters
164
+ * @returns Promise resolving to LoginResult (registration may require 2FA if enabled)
156
165
  *
157
166
  * @example
158
167
  * ```typescript
159
- * await db.auth.register('user@example.com', 'password123', {
160
- * username: 'johndoe',
161
- * fullName: 'John Doe'
168
+ * const result = await db.auth.register({
169
+ * email: 'user@example.com',
170
+ * password: 'password123',
171
+ * data: { username: 'johndoe', fullName: 'John Doe' },
172
+ * roles: ['user'] // optional, if allowed by project config
162
173
  * });
174
+ *
175
+ * if (result.requires_2fa) {
176
+ * // Handle 2FA verification
177
+ * } else {
178
+ * console.log('Registered as:', result.user?.email);
179
+ * }
163
180
  * ```
164
181
  */
165
- register(email: string, password: string, data?: Record<string, any>): Promise<void>;
182
+ register(params: RegisterParams): Promise<LoginResult>;
166
183
  /**
167
184
  * Authenticates a user using Google Sign-In with ID token.
168
185
  *
@@ -190,10 +207,10 @@ export declare class AuthHandler {
190
207
  * });
191
208
  *
192
209
  * // Mobile - After getting ID token from Google Sign-In SDK
193
- * const user = await db.auth.loginWithGoogle(idToken, 'mobile');
210
+ * const user = await db.auth.loginWithGoogle({ idToken, platform: 'mobile' });
194
211
  * ```
195
212
  */
196
- loginWithGoogle(idToken: string, platform?: "web" | "mobile" | "ios" | "android"): Promise<AppUser>;
213
+ loginWithGoogle(params: GoogleLoginParams): Promise<AppUser>;
197
214
  /**
198
215
  * Authenticates a user using GitHub OAuth with authorization code.
199
216
  *
@@ -231,35 +248,32 @@ export declare class AuthHandler {
231
248
  * }
232
249
  * ```
233
250
  */
234
- loginWithGithub(code: string, redirectUri: string, platform?: "web" | "mobile" | "ios" | "android"): Promise<AppUser>;
251
+ loginWithGithub(params: GithubLoginParams): Promise<AppUser>;
235
252
  /**
236
253
  * Register a new user with file uploads (avatar, cover photo, etc.)
237
254
  *
238
- * @param email - User email
239
- * @param password - User password
240
- * @param data - Additional user data (optional)
241
- * @param files - Object mapping field names to File objects (optional)
255
+ * @param params - Registration parameters with files
242
256
  *
243
257
  * @example
244
258
  * ```typescript
245
259
  * // Register with avatar
246
- * await db.auth.registerWithFiles(
247
- * 'john@example.com',
248
- * 'password123',
249
- * { username: 'johndoe', full_name: 'John Doe' },
250
- * { avatar: avatarFile }
251
- * );
260
+ * await db.auth.registerWithFiles({
261
+ * email: 'john@example.com',
262
+ * password: 'password123',
263
+ * data: { username: 'johndoe', full_name: 'John Doe' },
264
+ * files: { avatar: avatarFile }
265
+ * });
252
266
  *
253
267
  * // Register with avatar and cover photo
254
- * await db.auth.registerWithFiles(
255
- * 'john@example.com',
256
- * 'password123',
257
- * { username: 'johndoe' },
258
- * { avatar: avatarFile, cover_photo: coverFile }
259
- * );
268
+ * await db.auth.registerWithFiles({
269
+ * email: 'john@example.com',
270
+ * password: 'password123',
271
+ * data: { username: 'johndoe' },
272
+ * files: { avatar: avatarFile, cover_photo: coverFile }
273
+ * });
260
274
  * ```
261
275
  */
262
- registerWithFiles(email: string, password: string, data?: Record<string, any>, files?: Record<string, File | File[]>): Promise<AppUser>;
276
+ registerWithFiles(params: RegisterWithFilesParams): Promise<LoginResult>;
263
277
  /**
264
278
  * Logs out the current user by clearing the token and user data.
265
279
  *
@@ -298,53 +312,50 @@ export declare class AuthHandler {
298
312
  /**
299
313
  * Updates the current user's profile data.
300
314
  *
301
- * @param data - User data to update (optional)
302
- * @param email - New email address (optional)
303
- * @param password - New password (optional)
315
+ * @param params - Update parameters
304
316
  * @returns Promise resolving to the updated user object
305
317
  *
306
318
  * @example
307
319
  * ```typescript
308
320
  * await db.auth.updateUser({
309
- * bio: 'Updated bio',
310
- * website: 'https://example.com'
321
+ * data: { bio: 'Updated bio', website: 'https://example.com' }
311
322
  * });
323
+ *
324
+ * // Update email
325
+ * await db.auth.updateUser({ email: 'newemail@example.com' });
326
+ *
327
+ * // Update password
328
+ * await db.auth.updateUser({ password: 'newpassword123' });
312
329
  * ```
313
330
  */
314
- updateUser(data?: Record<string, any> | null, email?: string | null, password?: string | null): Promise<AppUser>;
331
+ updateUser(params: UpdateUserParams): Promise<AppUser>;
315
332
  /**
316
333
  * Update current user with file uploads
317
334
  *
318
- * @param data - User data to update (optional)
319
- * @param email - New email (optional)
320
- * @param password - New password (optional)
321
- * @param files - Object mapping field names to File objects (optional)
335
+ * @param params - Update parameters with files
322
336
  *
323
337
  * @example
324
338
  * ```typescript
325
339
  * // Update only avatar
326
- * await db.auth.updateUserWithFiles(
327
- * undefined, undefined, undefined,
328
- * { avatar: newAvatarFile }
329
- * );
340
+ * await db.auth.updateUserWithFiles({
341
+ * files: { avatar: newAvatarFile }
342
+ * });
330
343
  *
331
344
  * // Update bio and avatar
332
- * await db.auth.updateUserWithFiles(
333
- * { bio: 'Updated bio' },
334
- * undefined, undefined,
335
- * { avatar: newAvatarFile }
336
- * );
345
+ * await db.auth.updateUserWithFiles({
346
+ * data: { bio: 'Updated bio' },
347
+ * files: { avatar: newAvatarFile }
348
+ * });
337
349
  *
338
350
  * // Update multiple fields and files
339
- * await db.auth.updateUserWithFiles(
340
- * { username: 'newusername', bio: 'New bio' },
341
- * 'newemail@example.com',
342
- * undefined,
343
- * { avatar: newAvatar, cover_photo: newCover }
344
- * );
351
+ * await db.auth.updateUserWithFiles({
352
+ * data: { username: 'newusername', bio: 'New bio' },
353
+ * email: 'newemail@example.com',
354
+ * files: { avatar: newAvatar, cover_photo: newCover }
355
+ * });
345
356
  * ```
346
357
  */
347
- updateUserWithFiles(data?: Record<string, any> | null, email?: string | null, password?: string | null, files?: Record<string, File | File[]>): Promise<AppUser>;
358
+ updateUserWithFiles(params: UpdateUserWithFilesParams): Promise<AppUser>;
348
359
  /**
349
360
  * Checks if the current user has a specific role.
350
361
  *
@@ -389,6 +400,98 @@ export declare class AuthHandler {
389
400
  * ```
390
401
  */
391
402
  getUserById<T = any>(userId: string): Promise<AppUser>;
403
+ /**
404
+ * Enables Two-Factor Authentication (2FA) for the current user.
405
+ *
406
+ * @returns Promise that resolves when 2FA is enabled
407
+ *
408
+ * @example
409
+ * ```typescript
410
+ * await db.auth.enable2FA();
411
+ * console.log('2FA enabled for user');
412
+ * ```
413
+ */
414
+ enable2FA(): Promise<void>;
415
+ /**
416
+ * Disables Two-Factor Authentication (2FA) for the current user.
417
+ *
418
+ * @returns Promise that resolves when 2FA is disabled
419
+ *
420
+ * @example
421
+ * ```typescript
422
+ * await db.auth.disable2FA();
423
+ * console.log('2FA disabled for user');
424
+ * ```
425
+ */
426
+ disable2FA(): Promise<void>;
427
+ /**
428
+ * Sends a Two-Factor Authentication (2FA) code to the user's registered method (e.g., email, SMS).
429
+ *
430
+ * @returns Promise that resolves when the 2FA code is sent
431
+ *
432
+ * @example
433
+ * ```typescript
434
+ * await db.auth.send2FACode();
435
+ * console.log('2FA code sent to user');
436
+ * ```
437
+ */
438
+ send2FACode(email: string): Promise<void>;
439
+ /**
440
+ * Completes login after 2FA verification.
441
+ * Call this after login() returns requires_2fa: true and the user provides the 2FA code.
442
+ *
443
+ * @param params - 2FA verification parameters
444
+ * @returns Promise resolving to the authenticated user
445
+ *
446
+ * @example
447
+ * ```typescript
448
+ * // First, attempt login
449
+ * const result = await db.auth.login({ email: 'user@example.com', password: 'password123' });
450
+ *
451
+ * if (result.requires_2fa) {
452
+ * // User enters the 2FA code they received
453
+ * const user = await db.auth.verify2FALogin({ email: 'user@example.com', code: '123456' });
454
+ * console.log('Logged in as:', user.email);
455
+ * }
456
+ * ```
457
+ */
458
+ verify2FALogin(params: Verify2FAParams): Promise<AppUser>;
459
+ /**
460
+ * Requests an email verification to be sent to the user's email address.
461
+ *
462
+ * @returns Promise that resolves when the verification email is requested
463
+ *
464
+ * @example
465
+ * ```typescript
466
+ * await db.auth.requestEmailVerification();
467
+ * console.log('Verification email requested');
468
+ * ```
469
+ */
470
+ requestEmailVerification(): Promise<Response>;
471
+ /**
472
+ * Verifies the user's email using the provided token.
473
+ *
474
+ * @param token - Verification token
475
+ * @returns Promise that resolves when the email is verified
476
+ *
477
+ * @example
478
+ * ```typescript
479
+ * await db.auth.verifyEmail('verification-token');
480
+ * console.log('Email verified');
481
+ * ```
482
+ */
483
+ verifyEmail(token: string): Promise<Response>;
484
+ /** * Resends the email verification to the user's email address.
485
+ *
486
+ * @returns Promise that resolves when the verification email is resent
487
+ *
488
+ * @example
489
+ * ```typescript
490
+ * await db.auth.resendVerificationEmail();
491
+ * console.log('Verification email resent');
492
+ * ```
493
+ */
494
+ resendVerificationEmail(): Promise<void>;
392
495
  }
393
496
  export default AuthHandler;
394
497
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/core/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/core/auth.ts"],"names":[],"mappings":"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"}