@thetechfossil/auth2 1.2.19 → 1.2.21

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 (38) hide show
  1. package/README.md +1 -1
  2. package/dist/index.components.d.mts +1 -0
  3. package/dist/index.components.d.ts +1 -0
  4. package/dist/index.components.js +275 -11
  5. package/dist/index.components.js.map +1 -1
  6. package/dist/index.components.mjs +275 -11
  7. package/dist/index.components.mjs.map +1 -1
  8. package/dist/index.d.mts +111 -3
  9. package/dist/index.d.ts +111 -3
  10. package/dist/index.js +470 -30
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +471 -32
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/index.next.d.mts +54 -1
  15. package/dist/index.next.d.ts +54 -1
  16. package/dist/index.next.js +332 -26
  17. package/dist/index.next.js.map +1 -1
  18. package/dist/index.next.mjs +332 -26
  19. package/dist/index.next.mjs.map +1 -1
  20. package/dist/index.next.server.d.mts +81 -2
  21. package/dist/index.next.server.d.ts +81 -2
  22. package/dist/index.next.server.js +406 -9
  23. package/dist/index.next.server.js.map +1 -1
  24. package/dist/index.next.server.mjs +403 -10
  25. package/dist/index.next.server.mjs.map +1 -1
  26. package/dist/index.node.d.mts +81 -2
  27. package/dist/index.node.d.ts +81 -2
  28. package/dist/index.node.js +406 -9
  29. package/dist/index.node.js.map +1 -1
  30. package/dist/index.node.mjs +403 -10
  31. package/dist/index.node.mjs.map +1 -1
  32. package/dist/index.react-native.d.mts +227 -0
  33. package/dist/index.react-native.d.ts +227 -0
  34. package/dist/index.react-native.js +1684 -0
  35. package/dist/index.react-native.js.map +1 -0
  36. package/dist/index.react-native.mjs +1648 -0
  37. package/dist/index.react-native.mjs.map +1 -0
  38. package/package.json +119 -102
package/dist/index.d.mts CHANGED
@@ -17,6 +17,8 @@ interface User {
17
17
  phoneNumber?: string;
18
18
  avatar?: string;
19
19
  role: string;
20
+ emailVerified?: boolean;
21
+ twoFactorEnabled?: boolean;
20
22
  linkedAccounts?: LinkedAccount[];
21
23
  createdAt: string;
22
24
  updatedAt: string;
@@ -66,6 +68,7 @@ interface AuthConfig {
66
68
  localStorageKey?: string;
67
69
  token?: string;
68
70
  csrfEnabled?: boolean;
71
+ enableSocket?: boolean;
69
72
  upfilesConfig?: UpfilesConfig;
70
73
  }
71
74
  interface UpfilesConfig {
@@ -133,17 +136,80 @@ interface UseAuthReturn {
133
136
  }>;
134
137
  revokeSession: (sessionId: string) => Promise<AuthResponse>;
135
138
  revokeAllSessions: () => Promise<AuthResponse>;
139
+ adminCreateUser: (data: {
140
+ email: string;
141
+ name: string;
142
+ phoneNumber?: string;
143
+ password?: string;
144
+ }) => Promise<AuthResponse & {
145
+ user?: User;
146
+ }>;
147
+ adminVerifyUser: (userId: string) => Promise<AuthResponse>;
148
+ adminSuspendUser: (userId: string) => Promise<AuthResponse>;
149
+ adminActivateUser: (userId: string) => Promise<AuthResponse>;
150
+ }
151
+
152
+ interface SocketConfig {
153
+ baseUrl: string;
154
+ autoConnect?: boolean;
155
+ reconnection?: boolean;
156
+ reconnectionAttempts?: number;
157
+ reconnectionDelay?: number;
158
+ }
159
+ type SocketEventHandler<T = any> = (data: T) => void;
160
+ declare class SocketService {
161
+ private socket;
162
+ private config;
163
+ private token;
164
+ private eventHandlers;
165
+ private isConnecting;
166
+ constructor(config: SocketConfig);
167
+ connect(token: string): void;
168
+ private setupEventListeners;
169
+ disconnect(): void;
170
+ isConnected(): boolean;
171
+ on<T = any>(event: string, handler: SocketEventHandler<T>): () => void;
172
+ off(event: string, handler?: SocketEventHandler): void;
173
+ private emit;
174
+ requestUserRefresh(): void;
136
175
  }
137
176
 
138
177
  declare class AuthService {
139
178
  private httpClient;
179
+ private socketService;
140
180
  private config;
141
181
  private token;
142
182
  private upfilesClient;
183
+ private cachedUser;
184
+ private userCacheTimestamp;
185
+ private readonly USER_CACHE_TTL;
143
186
  constructor(config: AuthConfig);
144
187
  private loadTokenFromStorage;
145
188
  private saveTokenToStorage;
146
189
  private removeTokenFromStorage;
190
+ private connectSocket;
191
+ private disconnectSocket;
192
+ onUserUpdated(handler: SocketEventHandler<{
193
+ user: User;
194
+ }>): () => void;
195
+ onSessionRevoked(handler: SocketEventHandler<{
196
+ sessionId?: string;
197
+ }>): () => void;
198
+ onAllSessionsRevoked(handler: SocketEventHandler<{}>): () => void;
199
+ onPasswordChanged(handler: SocketEventHandler<{}>): () => void;
200
+ on2FAChanged(handler: SocketEventHandler<{
201
+ enabled: boolean;
202
+ }>): () => void;
203
+ onSocketConnected(handler: SocketEventHandler<{}>): () => void;
204
+ onSocketDisconnected(handler: SocketEventHandler<{
205
+ reason: string;
206
+ }>): () => void;
207
+ onSocketError(handler: SocketEventHandler<{
208
+ error: string;
209
+ }>): () => void;
210
+ isSocketConnected(): boolean;
211
+ clearUserCache(): void;
212
+ private isCacheValid;
147
213
  isAuthenticated(): boolean;
148
214
  getToken(): string | null;
149
215
  getCurrentUser(): User | null;
@@ -157,7 +223,7 @@ declare class AuthService {
157
223
  verify(data: VerifyData): Promise<AuthResponse>;
158
224
  verifyEmailToken(token: string): Promise<AuthResponse>;
159
225
  logout(): Promise<void>;
160
- getProfile(): Promise<User>;
226
+ getProfile(forceRefresh?: boolean): Promise<User>;
161
227
  updateProfile(data: UpdateUserData): Promise<AuthResponse>;
162
228
  getAllUsers(): Promise<User[]>;
163
229
  getUserById(id: string): Promise<User>;
@@ -188,6 +254,14 @@ declare class AuthService {
188
254
  success: boolean;
189
255
  logs: any[];
190
256
  }>;
257
+ adminCreateUser(data: {
258
+ email: string;
259
+ name: string;
260
+ phoneNumber?: string;
261
+ password?: string;
262
+ }): Promise<AuthResponse & {
263
+ user?: User;
264
+ }>;
191
265
  adminVerifyUser(userId: string): Promise<AuthResponse>;
192
266
  adminForcePasswordReset(userId: string): Promise<AuthResponse>;
193
267
  adminSuspendUser(userId: string): Promise<AuthResponse>;
@@ -200,6 +274,7 @@ declare class HttpClient {
200
274
  private frontendBaseUrl;
201
275
  private baseUrl;
202
276
  constructor(baseUrl: string, defaultHeaders?: Record<string, string>);
277
+ private createUserFriendlyError;
203
278
  get<T>(endpoint: string, headers?: Record<string, string>): Promise<T>;
204
279
  post<T>(endpoint: string, data?: any, headers?: Record<string, string>): Promise<T>;
205
280
  put<T>(endpoint: string, data?: any, headers?: Record<string, string>): Promise<T>;
@@ -220,6 +295,7 @@ interface AuthContextValue {
220
295
  isLoaded: boolean;
221
296
  isSignedIn: boolean;
222
297
  loading: boolean;
298
+ isSocketConnected: boolean;
223
299
  signIn: (data: LoginData) => Promise<AuthResponse>;
224
300
  signUp: (data: RegisterData) => Promise<AuthResponse>;
225
301
  signOut: () => Promise<void>;
@@ -557,10 +633,42 @@ declare class AuthClient extends AuthService {
557
633
  getAllUsers(): Promise<User[]>;
558
634
  }
559
635
 
636
+ interface TokenVerifierConfig {
637
+ authServiceUrl: string;
638
+ cacheTTL?: number;
639
+ cacheEnabled?: boolean;
640
+ }
641
+ declare class TokenVerifier {
642
+ private config;
643
+ private cache;
644
+ private cleanupInterval;
645
+ constructor(config: TokenVerifierConfig);
646
+ verifyToken(token: string): Promise<User | null>;
647
+ invalidateToken(token: string): void;
648
+ clearCache(): void;
649
+ getCacheStats(): {
650
+ size: number;
651
+ enabled: boolean;
652
+ ttl: number;
653
+ };
654
+ destroy(): void;
655
+ private getFromCache;
656
+ private setCache;
657
+ private startCleanup;
658
+ }
659
+ declare function createTokenVerifier(config: TokenVerifierConfig): TokenVerifier;
660
+ declare function getTokenVerifier(): TokenVerifier;
661
+ declare function verifyToken(token: string): Promise<User | null>;
662
+
560
663
  type index_AuthClient = AuthClient;
561
664
  declare const index_AuthClient: typeof AuthClient;
665
+ type index_TokenVerifier = TokenVerifier;
666
+ declare const index_TokenVerifier: typeof TokenVerifier;
667
+ declare const index_createTokenVerifier: typeof createTokenVerifier;
668
+ declare const index_getTokenVerifier: typeof getTokenVerifier;
669
+ declare const index_verifyToken: typeof verifyToken;
562
670
  declare namespace index {
563
- export { index_AuthClient as AuthClient };
671
+ export { index_AuthClient as AuthClient, index_TokenVerifier as TokenVerifier, index_createTokenVerifier as createTokenVerifier, index_getTokenVerifier as getTokenVerifier, index_verifyToken as verifyToken };
564
672
  }
565
673
 
566
- export { type AuditLog, type AuthConfig, AuthFlow, AuthProvider, type AuthResponse, AuthService, AvatarManager, AvatarUploader, ChangePassword, type CsrfTokenResponse, EmailVerificationPage, ForgotPassword, HttpClient, type LinkedAccount, type LoginData, LoginForm, type MFASetup, type OAuthConfig, type OAuthProvider, OtpForm, ProtectedRoute, PublicRoute, type RegisterData, RegisterForm, ResetPassword, type Session, SignIn, SignOut, SignUp, type UpdateUserData, type UpfilesConfig, type UseAuthReturn, type User, UserButton, UserProfile, type VerifyData, VerifyEmail, index as node, index$1 as react, useAuth$1 as useAuth };
674
+ export { type AuditLog, type AuthConfig, AuthFlow, AuthProvider, type AuthResponse, AuthService, AvatarManager, AvatarUploader, ChangePassword, type CsrfTokenResponse, EmailVerificationPage, ForgotPassword, HttpClient, type LinkedAccount, type LoginData, LoginForm, type MFASetup, type OAuthConfig, type OAuthProvider, OtpForm, ProtectedRoute, PublicRoute, type RegisterData, RegisterForm, ResetPassword, type Session, SignIn, SignOut, SignUp, type SocketConfig, type SocketEventHandler, SocketService, type UpdateUserData, type UpfilesConfig, type UseAuthReturn, type User, UserButton, UserProfile, type VerifyData, VerifyEmail, index as node, index$1 as react, useAuth$1 as useAuth };
package/dist/index.d.ts CHANGED
@@ -17,6 +17,8 @@ interface User {
17
17
  phoneNumber?: string;
18
18
  avatar?: string;
19
19
  role: string;
20
+ emailVerified?: boolean;
21
+ twoFactorEnabled?: boolean;
20
22
  linkedAccounts?: LinkedAccount[];
21
23
  createdAt: string;
22
24
  updatedAt: string;
@@ -66,6 +68,7 @@ interface AuthConfig {
66
68
  localStorageKey?: string;
67
69
  token?: string;
68
70
  csrfEnabled?: boolean;
71
+ enableSocket?: boolean;
69
72
  upfilesConfig?: UpfilesConfig;
70
73
  }
71
74
  interface UpfilesConfig {
@@ -133,17 +136,80 @@ interface UseAuthReturn {
133
136
  }>;
134
137
  revokeSession: (sessionId: string) => Promise<AuthResponse>;
135
138
  revokeAllSessions: () => Promise<AuthResponse>;
139
+ adminCreateUser: (data: {
140
+ email: string;
141
+ name: string;
142
+ phoneNumber?: string;
143
+ password?: string;
144
+ }) => Promise<AuthResponse & {
145
+ user?: User;
146
+ }>;
147
+ adminVerifyUser: (userId: string) => Promise<AuthResponse>;
148
+ adminSuspendUser: (userId: string) => Promise<AuthResponse>;
149
+ adminActivateUser: (userId: string) => Promise<AuthResponse>;
150
+ }
151
+
152
+ interface SocketConfig {
153
+ baseUrl: string;
154
+ autoConnect?: boolean;
155
+ reconnection?: boolean;
156
+ reconnectionAttempts?: number;
157
+ reconnectionDelay?: number;
158
+ }
159
+ type SocketEventHandler<T = any> = (data: T) => void;
160
+ declare class SocketService {
161
+ private socket;
162
+ private config;
163
+ private token;
164
+ private eventHandlers;
165
+ private isConnecting;
166
+ constructor(config: SocketConfig);
167
+ connect(token: string): void;
168
+ private setupEventListeners;
169
+ disconnect(): void;
170
+ isConnected(): boolean;
171
+ on<T = any>(event: string, handler: SocketEventHandler<T>): () => void;
172
+ off(event: string, handler?: SocketEventHandler): void;
173
+ private emit;
174
+ requestUserRefresh(): void;
136
175
  }
137
176
 
138
177
  declare class AuthService {
139
178
  private httpClient;
179
+ private socketService;
140
180
  private config;
141
181
  private token;
142
182
  private upfilesClient;
183
+ private cachedUser;
184
+ private userCacheTimestamp;
185
+ private readonly USER_CACHE_TTL;
143
186
  constructor(config: AuthConfig);
144
187
  private loadTokenFromStorage;
145
188
  private saveTokenToStorage;
146
189
  private removeTokenFromStorage;
190
+ private connectSocket;
191
+ private disconnectSocket;
192
+ onUserUpdated(handler: SocketEventHandler<{
193
+ user: User;
194
+ }>): () => void;
195
+ onSessionRevoked(handler: SocketEventHandler<{
196
+ sessionId?: string;
197
+ }>): () => void;
198
+ onAllSessionsRevoked(handler: SocketEventHandler<{}>): () => void;
199
+ onPasswordChanged(handler: SocketEventHandler<{}>): () => void;
200
+ on2FAChanged(handler: SocketEventHandler<{
201
+ enabled: boolean;
202
+ }>): () => void;
203
+ onSocketConnected(handler: SocketEventHandler<{}>): () => void;
204
+ onSocketDisconnected(handler: SocketEventHandler<{
205
+ reason: string;
206
+ }>): () => void;
207
+ onSocketError(handler: SocketEventHandler<{
208
+ error: string;
209
+ }>): () => void;
210
+ isSocketConnected(): boolean;
211
+ clearUserCache(): void;
212
+ private isCacheValid;
147
213
  isAuthenticated(): boolean;
148
214
  getToken(): string | null;
149
215
  getCurrentUser(): User | null;
@@ -157,7 +223,7 @@ declare class AuthService {
157
223
  verify(data: VerifyData): Promise<AuthResponse>;
158
224
  verifyEmailToken(token: string): Promise<AuthResponse>;
159
225
  logout(): Promise<void>;
160
- getProfile(): Promise<User>;
226
+ getProfile(forceRefresh?: boolean): Promise<User>;
161
227
  updateProfile(data: UpdateUserData): Promise<AuthResponse>;
162
228
  getAllUsers(): Promise<User[]>;
163
229
  getUserById(id: string): Promise<User>;
@@ -188,6 +254,14 @@ declare class AuthService {
188
254
  success: boolean;
189
255
  logs: any[];
190
256
  }>;
257
+ adminCreateUser(data: {
258
+ email: string;
259
+ name: string;
260
+ phoneNumber?: string;
261
+ password?: string;
262
+ }): Promise<AuthResponse & {
263
+ user?: User;
264
+ }>;
191
265
  adminVerifyUser(userId: string): Promise<AuthResponse>;
192
266
  adminForcePasswordReset(userId: string): Promise<AuthResponse>;
193
267
  adminSuspendUser(userId: string): Promise<AuthResponse>;
@@ -200,6 +274,7 @@ declare class HttpClient {
200
274
  private frontendBaseUrl;
201
275
  private baseUrl;
202
276
  constructor(baseUrl: string, defaultHeaders?: Record<string, string>);
277
+ private createUserFriendlyError;
203
278
  get<T>(endpoint: string, headers?: Record<string, string>): Promise<T>;
204
279
  post<T>(endpoint: string, data?: any, headers?: Record<string, string>): Promise<T>;
205
280
  put<T>(endpoint: string, data?: any, headers?: Record<string, string>): Promise<T>;
@@ -220,6 +295,7 @@ interface AuthContextValue {
220
295
  isLoaded: boolean;
221
296
  isSignedIn: boolean;
222
297
  loading: boolean;
298
+ isSocketConnected: boolean;
223
299
  signIn: (data: LoginData) => Promise<AuthResponse>;
224
300
  signUp: (data: RegisterData) => Promise<AuthResponse>;
225
301
  signOut: () => Promise<void>;
@@ -557,10 +633,42 @@ declare class AuthClient extends AuthService {
557
633
  getAllUsers(): Promise<User[]>;
558
634
  }
559
635
 
636
+ interface TokenVerifierConfig {
637
+ authServiceUrl: string;
638
+ cacheTTL?: number;
639
+ cacheEnabled?: boolean;
640
+ }
641
+ declare class TokenVerifier {
642
+ private config;
643
+ private cache;
644
+ private cleanupInterval;
645
+ constructor(config: TokenVerifierConfig);
646
+ verifyToken(token: string): Promise<User | null>;
647
+ invalidateToken(token: string): void;
648
+ clearCache(): void;
649
+ getCacheStats(): {
650
+ size: number;
651
+ enabled: boolean;
652
+ ttl: number;
653
+ };
654
+ destroy(): void;
655
+ private getFromCache;
656
+ private setCache;
657
+ private startCleanup;
658
+ }
659
+ declare function createTokenVerifier(config: TokenVerifierConfig): TokenVerifier;
660
+ declare function getTokenVerifier(): TokenVerifier;
661
+ declare function verifyToken(token: string): Promise<User | null>;
662
+
560
663
  type index_AuthClient = AuthClient;
561
664
  declare const index_AuthClient: typeof AuthClient;
665
+ type index_TokenVerifier = TokenVerifier;
666
+ declare const index_TokenVerifier: typeof TokenVerifier;
667
+ declare const index_createTokenVerifier: typeof createTokenVerifier;
668
+ declare const index_getTokenVerifier: typeof getTokenVerifier;
669
+ declare const index_verifyToken: typeof verifyToken;
562
670
  declare namespace index {
563
- export { index_AuthClient as AuthClient };
671
+ export { index_AuthClient as AuthClient, index_TokenVerifier as TokenVerifier, index_createTokenVerifier as createTokenVerifier, index_getTokenVerifier as getTokenVerifier, index_verifyToken as verifyToken };
564
672
  }
565
673
 
566
- export { type AuditLog, type AuthConfig, AuthFlow, AuthProvider, type AuthResponse, AuthService, AvatarManager, AvatarUploader, ChangePassword, type CsrfTokenResponse, EmailVerificationPage, ForgotPassword, HttpClient, type LinkedAccount, type LoginData, LoginForm, type MFASetup, type OAuthConfig, type OAuthProvider, OtpForm, ProtectedRoute, PublicRoute, type RegisterData, RegisterForm, ResetPassword, type Session, SignIn, SignOut, SignUp, type UpdateUserData, type UpfilesConfig, type UseAuthReturn, type User, UserButton, UserProfile, type VerifyData, VerifyEmail, index as node, index$1 as react, useAuth$1 as useAuth };
674
+ export { type AuditLog, type AuthConfig, AuthFlow, AuthProvider, type AuthResponse, AuthService, AvatarManager, AvatarUploader, ChangePassword, type CsrfTokenResponse, EmailVerificationPage, ForgotPassword, HttpClient, type LinkedAccount, type LoginData, LoginForm, type MFASetup, type OAuthConfig, type OAuthProvider, OtpForm, ProtectedRoute, PublicRoute, type RegisterData, RegisterForm, ResetPassword, type Session, SignIn, SignOut, SignUp, type SocketConfig, type SocketEventHandler, SocketService, type UpdateUserData, type UpfilesConfig, type UseAuthReturn, type User, UserButton, UserProfile, type VerifyData, VerifyEmail, index as node, index$1 as react, useAuth$1 as useAuth };