@ackplus/nest-auth-client 1.1.29

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 (62) hide show
  1. package/README.md +93 -0
  2. package/dist/client/auth-client.d.ts +60 -0
  3. package/dist/client/auth-client.d.ts.map +1 -0
  4. package/dist/client/auth-client.js +383 -0
  5. package/dist/client/auth-client.js.map +1 -0
  6. package/dist/client/event-emitter.d.ts +27 -0
  7. package/dist/client/event-emitter.d.ts.map +1 -0
  8. package/dist/client/event-emitter.js +46 -0
  9. package/dist/client/event-emitter.js.map +1 -0
  10. package/dist/client/refresh-queue.d.ts +16 -0
  11. package/dist/client/refresh-queue.d.ts.map +1 -0
  12. package/dist/client/refresh-queue.js +63 -0
  13. package/dist/client/refresh-queue.js.map +1 -0
  14. package/dist/http/axios.adapter.d.ts +3 -0
  15. package/dist/http/axios.adapter.d.ts.map +1 -0
  16. package/dist/http/axios.adapter.js +55 -0
  17. package/dist/http/axios.adapter.js.map +1 -0
  18. package/dist/http/fetch.adapter.d.ts +5 -0
  19. package/dist/http/fetch.adapter.d.ts.map +1 -0
  20. package/dist/http/fetch.adapter.js +50 -0
  21. package/dist/http/fetch.adapter.js.map +1 -0
  22. package/dist/index.d.ts +18 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +15 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/storage/cookie.storage.d.ts +22 -0
  27. package/dist/storage/cookie.storage.d.ts.map +1 -0
  28. package/dist/storage/cookie.storage.js +79 -0
  29. package/dist/storage/cookie.storage.js.map +1 -0
  30. package/dist/storage/local.storage.d.ts +11 -0
  31. package/dist/storage/local.storage.d.ts.map +1 -0
  32. package/dist/storage/local.storage.js +56 -0
  33. package/dist/storage/local.storage.js.map +1 -0
  34. package/dist/storage/memory.storage.d.ts +9 -0
  35. package/dist/storage/memory.storage.d.ts.map +1 -0
  36. package/dist/storage/memory.storage.js +18 -0
  37. package/dist/storage/memory.storage.js.map +1 -0
  38. package/dist/storage/session.storage.d.ts +11 -0
  39. package/dist/storage/session.storage.d.ts.map +1 -0
  40. package/dist/storage/session.storage.js +56 -0
  41. package/dist/storage/session.storage.js.map +1 -0
  42. package/dist/token/jwt-utils.d.ts +7 -0
  43. package/dist/token/jwt-utils.d.ts.map +1 -0
  44. package/dist/token/jwt-utils.js +49 -0
  45. package/dist/token/jwt-utils.js.map +1 -0
  46. package/dist/token/token-manager.d.ts +29 -0
  47. package/dist/token/token-manager.d.ts.map +1 -0
  48. package/dist/token/token-manager.js +102 -0
  49. package/dist/token/token-manager.js.map +1 -0
  50. package/dist/types/auth.types.d.ts +33 -0
  51. package/dist/types/auth.types.d.ts.map +1 -0
  52. package/dist/types/auth.types.js +2 -0
  53. package/dist/types/auth.types.js.map +1 -0
  54. package/dist/types/config.types.d.ts +73 -0
  55. package/dist/types/config.types.d.ts.map +1 -0
  56. package/dist/types/config.types.js +17 -0
  57. package/dist/types/config.types.js.map +1 -0
  58. package/dist/utils/role-utils.d.ts +12 -0
  59. package/dist/utils/role-utils.d.ts.map +1 -0
  60. package/dist/utils/role-utils.js +43 -0
  61. package/dist/utils/role-utils.js.map +1 -0
  62. package/package.json +56 -0
package/README.md ADDED
@@ -0,0 +1,93 @@
1
+ # @ackplus/nest-auth-client
2
+
3
+ The official JavaScript/TypeScript client SDK for `@ackplus/nest-auth`.
4
+
5
+ ## Features
6
+
7
+ - 🔄 **Framework Agnostic** - Works in React, Vue, Angular, React Native, or vanilla JS.
8
+ - 💾 **Storage Adapters** - Built-in support for `localStorage`, `sessionStorage`, `AsyncStorage`, and Cookies.
9
+ - 🔄 **Auto Refresh** - Automatically handles JWT refresh token rotation silently.
10
+ - 📡 **HTTP Client** - Configurable HTTP client with interceptors.
11
+ - 🔐 **Type-Safe** - Full TypeScript support sharing types with the backend.
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @ackplus/nest-auth-client
17
+ # or
18
+ pnpm add @ackplus/nest-auth-client
19
+ ```
20
+
21
+ ## Quick Start
22
+
23
+ ### 1. Initialize Client
24
+
25
+ ```typescript
26
+ import { createAuthClient } from '@ackplus/nest-auth-client';
27
+
28
+ export const authClient = createAuthClient({
29
+ apiUrl: 'http://localhost:3000',
30
+ storage: 'local', // or 'cookie', 'memory'
31
+ });
32
+ ```
33
+
34
+ ### 2. Login
35
+
36
+ ```typescript
37
+ try {
38
+ const { user, tokens } = await authClient.login({
39
+ email: 'user@example.com',
40
+ password: 'password123',
41
+ });
42
+
43
+ console.log('Logged in user:', user);
44
+ } catch (error) {
45
+ console.error('Login failed:', error);
46
+ }
47
+ ```
48
+
49
+ ### 3. Make Authenticated Requests
50
+
51
+ The client ensures the access token is attached and refreshed automatically using its internal HTTP client.
52
+
53
+ ```typescript
54
+ const response = await authClient.http.get('/profile');
55
+ ```
56
+
57
+ ## Advanced Usage
58
+
59
+ ### Custom Storage (e.g., React Native)
60
+
61
+ ```typescript
62
+ import { createAuthClient } from '@ackplus/nest-auth-client';
63
+ import AsyncStorage from '@react-native-async-storage/async-storage';
64
+
65
+ const authClient = createAuthClient({
66
+ apiUrl: 'https://api.myapp.com',
67
+ storage: {
68
+ msg: 'async-storage',
69
+ getItem: AsyncStorage.getItem,
70
+ setItem: AsyncStorage.setItem,
71
+ removeItem: AsyncStorage.removeItem,
72
+ },
73
+ });
74
+ ```
75
+
76
+ ### Event Listening
77
+
78
+ ```typescript
79
+ authClient.on('login', (user) => {
80
+ console.log('User just logged in', user);
81
+ });
82
+
83
+ authClient.on('logout', () => {
84
+ console.log('User logged out');
85
+ // Redirect to login page
86
+ });
87
+ ```
88
+
89
+ ## Related Packages
90
+
91
+ - [@ackplus/nest-auth](../nest-auth) - The backend module.
92
+ - [@ackplus/nest-auth-react](../nest-auth-react) - React hooks for this client.
93
+ - [@ackplus/nest-auth-contracts](../nest-auth-contracts) - Shared types.
@@ -0,0 +1,60 @@
1
+ import { IAuthUser as AuthUser, ITokenPair as TokenPair, ILoginRequest as LoginDto, ISignupRequest as SignupDto, IRefreshRequest as RefreshDto, IForgotPasswordRequest as ForgotPasswordDto, IResetPasswordRequest as ResetPasswordDto, IVerifyEmailRequest as VerifyEmailDto, IResendVerificationRequest as ResendVerificationDto, IChangePasswordRequest as ChangePasswordDto, IVerify2faRequest as Verify2faDto, IAuthResponse as AuthResponse, IMessageResponse as MessageResponse, IVerifyOtpResponse as VerifyOtpResponse, IVerify2faResponse as Verify2faResponse } from '@ackplus/nest-auth-contracts';
2
+ import { AuthClientConfig, RequestOptions } from '../types/config.types';
3
+ import { ClientSession } from '../types/auth.types';
4
+ import { AuthError } from '../types/auth.types';
5
+ export declare class AuthClient {
6
+ private config;
7
+ private tokenManager;
8
+ private events;
9
+ private refreshQueue;
10
+ private retryTracker;
11
+ private user;
12
+ private session;
13
+ private tenantId;
14
+ private timeout;
15
+ constructor(config: AuthClientConfig);
16
+ private log;
17
+ private loadPersistedState;
18
+ private persistState;
19
+ private buildUrl;
20
+ private getEndpoint;
21
+ private getTenantIdValue;
22
+ private buildHeaders;
23
+ private request;
24
+ private handleError;
25
+ private handleAuthResponse;
26
+ login(dto: LoginDto, options?: RequestOptions): Promise<AuthResponse>;
27
+ signup(dto: SignupDto, options?: RequestOptions): Promise<AuthResponse>;
28
+ logout(options?: RequestOptions): Promise<void>;
29
+ refresh(dto?: RefreshDto, options?: RequestOptions): Promise<TokenPair>;
30
+ verifySession(options?: RequestOptions): Promise<{
31
+ valid: boolean;
32
+ userId?: string;
33
+ expiresAt?: string;
34
+ }>;
35
+ forgotPassword(dto: ForgotPasswordDto, options?: RequestOptions): Promise<MessageResponse>;
36
+ verifyForgotPasswordOtp(dto: {
37
+ email?: string;
38
+ phone?: string;
39
+ otp: string;
40
+ }, options?: RequestOptions): Promise<VerifyOtpResponse>;
41
+ resetPassword(dto: ResetPasswordDto, options?: RequestOptions): Promise<MessageResponse>;
42
+ changePassword(dto: ChangePasswordDto, options?: RequestOptions): Promise<MessageResponse>;
43
+ verifyEmail(dto: VerifyEmailDto, options?: RequestOptions): Promise<MessageResponse>;
44
+ resendVerification(dto: ResendVerificationDto, options?: RequestOptions): Promise<MessageResponse>;
45
+ send2fa(method?: 'email' | 'phone', options?: RequestOptions): Promise<MessageResponse>;
46
+ verify2fa(dto: Verify2faDto, options?: RequestOptions): Promise<Verify2faResponse>;
47
+ setMode(mode: 'header' | 'cookie'): void;
48
+ getMode(): 'header' | 'cookie';
49
+ setTenantId(id: string): void;
50
+ getTenantId(): string | undefined;
51
+ getUser(): AuthUser | null;
52
+ getSession(): ClientSession | null;
53
+ isAuthenticated(): boolean;
54
+ getAccessToken(): Promise<string | null>;
55
+ onAuthStateChange(callback: (user: AuthUser | null) => void): () => void;
56
+ onTokenRefreshed(callback: (tokens: TokenPair) => void): () => void;
57
+ onLogout(callback: () => void): () => void;
58
+ onError(callback: (error: AuthError) => void): () => void;
59
+ }
60
+ //# sourceMappingURL=auth-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,383 @@
1
+ import { DEFAULT_ENDPOINTS, } from '../types/config.types';
2
+ import { LocalStorageAdapter } from '../storage/local.storage';
3
+ import { FetchAdapter } from '../http/fetch.adapter';
4
+ import { TokenManager } from '../token/token-manager';
5
+ import { decodeJwt, getUserIdFromToken } from '../token/jwt-utils';
6
+ import { EventEmitter } from './event-emitter';
7
+ import { RefreshQueue, RetryTracker } from './refresh-queue';
8
+ const STORAGE_KEYS = {
9
+ USER: 'user',
10
+ SESSION: 'session',
11
+ };
12
+ export class AuthClient {
13
+ constructor(config) {
14
+ this.user = null;
15
+ this.session = null;
16
+ this.timeout = 30000;
17
+ this.config = {
18
+ ...config,
19
+ endpoints: { ...DEFAULT_ENDPOINTS, ...config.endpoints },
20
+ accessTokenType: config.accessTokenType ?? null,
21
+ storage: config.storage ?? new LocalStorageAdapter(),
22
+ httpAdapter: config.httpAdapter ?? new FetchAdapter(),
23
+ autoRefresh: config.autoRefresh ?? true,
24
+ refreshThreshold: config.refreshThreshold ?? 60,
25
+ tenantHeader: config.tenantHeader ?? 'x-tenant-id',
26
+ };
27
+ if (typeof config.tenantId === 'function') {
28
+ this.tenantId = config.tenantId();
29
+ }
30
+ else {
31
+ this.tenantId = config.tenantId;
32
+ }
33
+ this.tokenManager = new TokenManager({
34
+ storage: this.config.storage,
35
+ accessTokenType: this.config.accessTokenType,
36
+ refreshThreshold: this.config.refreshThreshold,
37
+ });
38
+ this.events = new EventEmitter();
39
+ this.refreshQueue = new RefreshQueue();
40
+ this.retryTracker = new RetryTracker();
41
+ this.loadPersistedState();
42
+ }
43
+ log(level, message, ...args) {
44
+ if (this.config.logger?.[level]) {
45
+ this.config.logger[level](message, ...args);
46
+ }
47
+ }
48
+ async loadPersistedState() {
49
+ try {
50
+ const userJson = await Promise.resolve(this.config.storage.get(STORAGE_KEYS.USER));
51
+ if (userJson) {
52
+ this.user = JSON.parse(userJson);
53
+ }
54
+ const sessionJson = await Promise.resolve(this.config.storage.get(STORAGE_KEYS.SESSION));
55
+ if (sessionJson) {
56
+ this.session = JSON.parse(sessionJson);
57
+ }
58
+ }
59
+ catch (error) {
60
+ this.log('warn', 'Failed to load persisted auth state', error);
61
+ }
62
+ }
63
+ async persistState() {
64
+ try {
65
+ if (this.user) {
66
+ await Promise.resolve(this.config.storage.set(STORAGE_KEYS.USER, JSON.stringify(this.user)));
67
+ }
68
+ else {
69
+ await Promise.resolve(this.config.storage.remove(STORAGE_KEYS.USER));
70
+ }
71
+ if (this.session) {
72
+ await Promise.resolve(this.config.storage.set(STORAGE_KEYS.SESSION, JSON.stringify(this.session)));
73
+ }
74
+ else {
75
+ await Promise.resolve(this.config.storage.remove(STORAGE_KEYS.SESSION));
76
+ }
77
+ }
78
+ catch (error) {
79
+ this.log('warn', 'Failed to persist auth state', error);
80
+ }
81
+ }
82
+ buildUrl(endpoint) {
83
+ const base = this.config.baseUrl.replace(/\/$/, '');
84
+ const path = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
85
+ return `${base}${path}`;
86
+ }
87
+ getEndpoint(key) {
88
+ return this.config.endpoints[key] || DEFAULT_ENDPOINTS[key];
89
+ }
90
+ getTenantIdValue() {
91
+ if (typeof this.config.tenantId === 'function') {
92
+ return this.config.tenantId();
93
+ }
94
+ return this.tenantId ?? this.config.tenantId;
95
+ }
96
+ async buildHeaders(options) {
97
+ const headers = {
98
+ 'Content-Type': 'application/json',
99
+ ...options?.headers,
100
+ };
101
+ if (this.tokenManager.isHeaderMode()) {
102
+ const authHeader = await this.tokenManager.getAuthorizationHeader();
103
+ if (authHeader) {
104
+ headers['Authorization'] = authHeader;
105
+ }
106
+ }
107
+ const tenantId = this.getTenantIdValue();
108
+ if (tenantId) {
109
+ headers[this.config.tenantHeader] = tenantId;
110
+ }
111
+ return headers;
112
+ }
113
+ async request(method, endpoint, body, options) {
114
+ const url = this.buildUrl(endpoint);
115
+ const headers = await this.buildHeaders(options);
116
+ const requestId = this.retryTracker.createRequestId(method, url);
117
+ const makeRequest = async () => {
118
+ return this.config.httpAdapter.request({
119
+ url,
120
+ method,
121
+ headers,
122
+ body,
123
+ credentials: this.tokenManager.isCookieMode() ? 'include' : 'same-origin',
124
+ timeout: options?.timeout ?? this.timeout,
125
+ signal: options?.signal,
126
+ });
127
+ };
128
+ let response = await makeRequest();
129
+ if (response.status === 401 &&
130
+ !options?.skipRefresh &&
131
+ !this.retryTracker.hasRetried(requestId) &&
132
+ this.config.autoRefresh) {
133
+ this.log('debug', '401 received, attempting token refresh');
134
+ try {
135
+ this.retryTracker.markRetried(requestId);
136
+ await this.refresh();
137
+ const newHeaders = await this.buildHeaders(options);
138
+ response = await this.config.httpAdapter.request({
139
+ url,
140
+ method,
141
+ headers: newHeaders,
142
+ body,
143
+ credentials: this.tokenManager.isCookieMode() ? 'include' : 'same-origin',
144
+ timeout: options?.timeout ?? this.timeout,
145
+ signal: options?.signal,
146
+ });
147
+ }
148
+ catch (refreshError) {
149
+ this.log('debug', 'Token refresh failed', refreshError);
150
+ }
151
+ }
152
+ return response;
153
+ }
154
+ handleError(response) {
155
+ const error = {
156
+ message: response.data?.message || 'An error occurred',
157
+ code: response.data?.code || response.data?.error,
158
+ statusCode: response.status,
159
+ details: response.data,
160
+ };
161
+ this.events.emit('error', error);
162
+ this.config.onError?.(error);
163
+ return error;
164
+ }
165
+ async handleAuthResponse(response) {
166
+ if (response.accessToken && response.refreshToken) {
167
+ await this.tokenManager.setTokens({
168
+ accessToken: response.accessToken,
169
+ refreshToken: response.refreshToken,
170
+ });
171
+ }
172
+ if (response.user) {
173
+ this.user = response.user;
174
+ }
175
+ const decoded = response.accessToken ? decodeJwt(response.accessToken) : null;
176
+ this.session = {
177
+ id: decoded?.sessionId || '',
178
+ userId: response.user?.id || getUserIdFromToken(response.accessToken) || '',
179
+ accessToken: this.tokenManager.isHeaderMode() ? response.accessToken : undefined,
180
+ refreshToken: this.tokenManager.isHeaderMode() ? response.refreshToken : undefined,
181
+ expiresAt: decoded?.exp ? new Date(decoded.exp * 1000) : undefined,
182
+ };
183
+ await this.persistState();
184
+ this.events.emit('authStateChange', { user: this.user });
185
+ this.config.onAuthStateChange?.(this.user);
186
+ }
187
+ async login(dto, options) {
188
+ const endpoint = this.getEndpoint('login');
189
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
190
+ if (!response.ok) {
191
+ throw this.handleError(response);
192
+ }
193
+ if (response.data.isRequiresMfa) {
194
+ return response.data;
195
+ }
196
+ await this.handleAuthResponse(response.data);
197
+ return response.data;
198
+ }
199
+ async signup(dto, options) {
200
+ const endpoint = this.getEndpoint('signup');
201
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
202
+ if (!response.ok) {
203
+ throw this.handleError(response);
204
+ }
205
+ await this.handleAuthResponse(response.data);
206
+ return response.data;
207
+ }
208
+ async logout(options) {
209
+ const endpoint = this.getEndpoint('logout');
210
+ try {
211
+ await this.request('POST', endpoint, undefined, { ...options, skipRefresh: true });
212
+ }
213
+ catch {
214
+ }
215
+ await this.tokenManager.clearTokens();
216
+ this.user = null;
217
+ this.session = null;
218
+ await this.persistState();
219
+ this.refreshQueue.cancel();
220
+ this.retryTracker.clear();
221
+ this.events.emit('logout', undefined);
222
+ this.events.emit('authStateChange', { user: null });
223
+ this.config.onLogout?.();
224
+ this.config.onAuthStateChange?.(null);
225
+ }
226
+ async refresh(dto, options) {
227
+ return this.refreshQueue.refresh(async () => {
228
+ const endpoint = this.getEndpoint('refresh');
229
+ let body = dto;
230
+ if (this.tokenManager.isHeaderMode() && !dto?.refreshToken) {
231
+ const refreshToken = await this.tokenManager.getRefreshToken();
232
+ if (refreshToken) {
233
+ body = { refreshToken };
234
+ }
235
+ }
236
+ const response = await this.request('POST', endpoint, body, { ...options, skipRefresh: true });
237
+ if (!response.ok) {
238
+ await this.logout();
239
+ throw this.handleError(response);
240
+ }
241
+ const tokens = {
242
+ accessToken: response.data.accessToken,
243
+ refreshToken: response.data.refreshToken,
244
+ };
245
+ await this.tokenManager.setTokens(tokens);
246
+ const decoded = decodeJwt(tokens.accessToken);
247
+ if (this.session) {
248
+ this.session.accessToken = this.tokenManager.isHeaderMode() ? tokens.accessToken : undefined;
249
+ this.session.refreshToken = this.tokenManager.isHeaderMode() ? tokens.refreshToken : undefined;
250
+ this.session.expiresAt = decoded?.exp ? new Date(decoded.exp * 1000) : undefined;
251
+ }
252
+ await this.persistState();
253
+ this.events.emit('tokenRefreshed', tokens);
254
+ this.config.onTokenRefreshed?.(tokens);
255
+ return tokens;
256
+ });
257
+ }
258
+ async verifySession(options) {
259
+ const endpoint = this.getEndpoint('verifySession');
260
+ const response = await this.request('GET', endpoint, undefined, options);
261
+ if (!response.ok) {
262
+ if (response.status === 401) {
263
+ this.user = null;
264
+ this.session = null;
265
+ await this.persistState();
266
+ this.events.emit('authStateChange', { user: null });
267
+ this.config.onAuthStateChange?.(null);
268
+ }
269
+ return { valid: false };
270
+ }
271
+ return response.data;
272
+ }
273
+ async forgotPassword(dto, options) {
274
+ const endpoint = this.getEndpoint('forgotPassword');
275
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
276
+ if (!response.ok) {
277
+ throw this.handleError(response);
278
+ }
279
+ return response.data;
280
+ }
281
+ async verifyForgotPasswordOtp(dto, options) {
282
+ const endpoint = this.getEndpoint('verifyForgotPasswordOtp');
283
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
284
+ if (!response.ok) {
285
+ throw this.handleError(response);
286
+ }
287
+ return response.data;
288
+ }
289
+ async resetPassword(dto, options) {
290
+ const endpoint = this.getEndpoint('resetPassword');
291
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
292
+ if (!response.ok) {
293
+ throw this.handleError(response);
294
+ }
295
+ return response.data;
296
+ }
297
+ async changePassword(dto, options) {
298
+ const endpoint = this.getEndpoint('changePassword');
299
+ const response = await this.request('POST', endpoint, dto, options);
300
+ if (!response.ok) {
301
+ throw this.handleError(response);
302
+ }
303
+ return response.data;
304
+ }
305
+ async verifyEmail(dto, options) {
306
+ const endpoint = this.getEndpoint('verifyEmail');
307
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
308
+ if (!response.ok) {
309
+ throw this.handleError(response);
310
+ }
311
+ if (this.user) {
312
+ this.user.isVerified = true;
313
+ await this.persistState();
314
+ }
315
+ return response.data;
316
+ }
317
+ async resendVerification(dto, options) {
318
+ const endpoint = this.getEndpoint('resendVerification');
319
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
320
+ if (!response.ok) {
321
+ throw this.handleError(response);
322
+ }
323
+ return response.data;
324
+ }
325
+ async send2fa(method = 'email', options) {
326
+ const endpoint = this.getEndpoint('send2fa');
327
+ const response = await this.request('POST', endpoint, { method }, { ...options, skipRefresh: true });
328
+ if (!response.ok) {
329
+ throw this.handleError(response);
330
+ }
331
+ return response.data;
332
+ }
333
+ async verify2fa(dto, options) {
334
+ const endpoint = this.getEndpoint('verify2fa');
335
+ const response = await this.request('POST', endpoint, dto, { ...options, skipRefresh: true });
336
+ if (!response.ok) {
337
+ throw this.handleError(response);
338
+ }
339
+ await this.handleAuthResponse(response.data);
340
+ return response.data;
341
+ }
342
+ setMode(mode) {
343
+ if (this.config.accessTokenType !== null && this.config.accessTokenType !== mode) {
344
+ this.log('warn', `Cannot change mode from '${this.config.accessTokenType}' to '${mode}' when accessTokenType is explicitly set`);
345
+ return;
346
+ }
347
+ this.tokenManager.setMode(mode);
348
+ }
349
+ getMode() {
350
+ return this.tokenManager.getMode();
351
+ }
352
+ setTenantId(id) {
353
+ this.tenantId = id;
354
+ }
355
+ getTenantId() {
356
+ return this.getTenantIdValue();
357
+ }
358
+ getUser() {
359
+ return this.user;
360
+ }
361
+ getSession() {
362
+ return this.session;
363
+ }
364
+ isAuthenticated() {
365
+ return this.user !== null;
366
+ }
367
+ async getAccessToken() {
368
+ return this.tokenManager.getAccessToken();
369
+ }
370
+ onAuthStateChange(callback) {
371
+ return this.events.on('authStateChange', ({ user }) => callback(user));
372
+ }
373
+ onTokenRefreshed(callback) {
374
+ return this.events.on('tokenRefreshed', callback);
375
+ }
376
+ onLogout(callback) {
377
+ return this.events.on('logout', callback);
378
+ }
379
+ onError(callback) {
380
+ return this.events.on('error', callback);
381
+ }
382
+ }
383
+ //# sourceMappingURL=auth-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ type EventCallback<T = any> = (data: T) => void;
2
+ export declare class EventEmitter<Events extends Record<string, any> = Record<string, any>> {
3
+ private listeners;
4
+ on<K extends keyof Events>(event: K, callback: EventCallback<Events[K]>): () => void;
5
+ once<K extends keyof Events>(event: K, callback: EventCallback<Events[K]>): () => void;
6
+ off<K extends keyof Events>(event: K, callback: EventCallback<Events[K]>): void;
7
+ emit<K extends keyof Events>(event: K, data: Events[K]): void;
8
+ removeAllListeners<K extends keyof Events>(event?: K): void;
9
+ }
10
+ export interface AuthEvents {
11
+ authStateChange: {
12
+ user: any | null;
13
+ };
14
+ tokenRefreshed: {
15
+ accessToken: string;
16
+ refreshToken: string;
17
+ };
18
+ logout: void;
19
+ error: {
20
+ message: string;
21
+ code?: string;
22
+ statusCode?: number;
23
+ };
24
+ }
25
+ export declare function createAuthEventEmitter(): EventEmitter<AuthEvents>;
26
+ export {};
27
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../src/client/event-emitter.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAKhD,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9E,OAAO,CAAC,SAAS,CAA+C;IAMhE,EAAE,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAepF,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAWtF,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAO/E,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAa7D,kBAAkB,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;CAO9D;AAKD,MAAM,WAAW,UAAU;IAEvB,eAAe,EAAE;QAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;KAAE,CAAC;IAEtC,cAAc,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAE9D,MAAM,EAAE,IAAI,CAAC;IAEb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAKD,wBAAgB,sBAAsB,IAAI,YAAY,CAAC,UAAU,CAAC,CAEjE"}
@@ -0,0 +1,46 @@
1
+ export class EventEmitter {
2
+ constructor() {
3
+ this.listeners = new Map();
4
+ }
5
+ on(event, callback) {
6
+ if (!this.listeners.has(event)) {
7
+ this.listeners.set(event, new Set());
8
+ }
9
+ this.listeners.get(event).add(callback);
10
+ return () => {
11
+ this.off(event, callback);
12
+ };
13
+ }
14
+ once(event, callback) {
15
+ const wrapper = (data) => {
16
+ this.off(event, wrapper);
17
+ callback(data);
18
+ };
19
+ return this.on(event, wrapper);
20
+ }
21
+ off(event, callback) {
22
+ this.listeners.get(event)?.delete(callback);
23
+ }
24
+ emit(event, data) {
25
+ this.listeners.get(event)?.forEach(callback => {
26
+ try {
27
+ callback(data);
28
+ }
29
+ catch (error) {
30
+ console.error(`Error in event listener for ${String(event)}:`, error);
31
+ }
32
+ });
33
+ }
34
+ removeAllListeners(event) {
35
+ if (event) {
36
+ this.listeners.delete(event);
37
+ }
38
+ else {
39
+ this.listeners.clear();
40
+ }
41
+ }
42
+ }
43
+ export function createAuthEventEmitter() {
44
+ return new EventEmitter();
45
+ }
46
+ //# sourceMappingURL=event-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../src/client/event-emitter.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,YAAY;IAAzB;QACY,cAAS,GAAG,IAAI,GAAG,EAAoC,CAAC;IA2DpE,CAAC;IArDG,EAAE,CAAyB,KAAQ,EAAE,QAAkC;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAGzC,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC;IACN,CAAC;IAKD,IAAI,CAAyB,KAAQ,EAAE,QAAkC;QACrE,MAAM,OAAO,GAA6B,CAAC,IAAI,EAAE,EAAE;YAC/C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAKD,GAAG,CAAyB,KAAQ,EAAE,QAAkC;QACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAKD,IAAI,CAAyB,KAAQ,EAAE,IAAe;QAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1C,IAAI,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAKD,kBAAkB,CAAyB,KAAS;QAChD,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ;AAmBD,MAAM,UAAU,sBAAsB;IAClC,OAAO,IAAI,YAAY,EAAc,CAAC;AAC1C,CAAC"}