@allanfsouza/aether-sdk 2.5.0 → 2.5.2

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 (46) hide show
  1. package/README.md +86 -2
  2. package/dist/ai.d.ts +78 -0
  3. package/dist/ai.d.ts.map +1 -0
  4. package/dist/ai.js +107 -0
  5. package/dist/ai.js.map +1 -0
  6. package/dist/auth.d.ts +30 -15
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +156 -55
  9. package/dist/auth.js.map +1 -0
  10. package/dist/database.d.ts +1 -0
  11. package/dist/database.d.ts.map +1 -0
  12. package/dist/database.js +1 -0
  13. package/dist/database.js.map +1 -0
  14. package/dist/errors.d.ts +1 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +1 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/functions.d.ts +1 -0
  19. package/dist/functions.d.ts.map +1 -0
  20. package/dist/functions.js +1 -0
  21. package/dist/functions.js.map +1 -0
  22. package/dist/http-client.d.ts +1 -0
  23. package/dist/http-client.d.ts.map +1 -0
  24. package/dist/http-client.js +1 -0
  25. package/dist/http-client.js.map +1 -0
  26. package/dist/index.d.ts +9 -10
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +37 -20
  29. package/dist/index.js.map +1 -0
  30. package/dist/push.d.ts +1 -0
  31. package/dist/push.d.ts.map +1 -0
  32. package/dist/push.js +1 -0
  33. package/dist/push.js.map +1 -0
  34. package/dist/storage.d.ts +1 -0
  35. package/dist/storage.d.ts.map +1 -0
  36. package/dist/storage.js +1 -0
  37. package/dist/storage.js.map +1 -0
  38. package/dist/tenant-auth.d.ts +1 -0
  39. package/dist/tenant-auth.d.ts.map +1 -0
  40. package/dist/tenant-auth.js +1 -0
  41. package/dist/tenant-auth.js.map +1 -0
  42. package/package.json +1 -1
  43. package/src/ai.ts +148 -0
  44. package/src/auth.ts +192 -61
  45. package/src/index.ts +55 -23
  46. package/tsconfig.json +16 -8
package/dist/push.d.ts CHANGED
@@ -70,3 +70,4 @@ export declare class PushModule {
70
70
  listLogs(options?: ListPushLogsOptions): Promise<PushLogEntry[]>;
71
71
  getStats(): Promise<PushStats>;
72
72
  }
73
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
package/dist/push.js CHANGED
@@ -59,3 +59,4 @@ export class PushModule {
59
59
  return data;
60
60
  }
61
61
  }
62
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
package/dist/storage.d.ts CHANGED
@@ -37,3 +37,4 @@ export declare class StorageModule {
37
37
  list(folder?: string): Promise<any>;
38
38
  delete(fileId: string): Promise<boolean>;
39
39
  }
40
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,IAAI,CAAgB;gBAEhB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa;IASzD;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM;uBAEI,MAAM,QAAQ,IAAI,GAAG,IAAI,GAAG,MAAM;;;;;;;;;;;;IAwB3D;;OAEG;IACG,MAAM,CACV,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,EAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;IAwCX,IAAI,CAAC,MAAM,SAAK;IAOhB,MAAM,CAAC,MAAM,EAAE,MAAM;CAI5B"}
package/dist/storage.js CHANGED
@@ -85,3 +85,4 @@ export class StorageModule {
85
85
  return true;
86
86
  }
87
87
  }
88
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -170,3 +170,4 @@ export declare class TenantAuthModule {
170
170
  */
171
171
  isAuthenticated(): boolean;
172
172
  }
173
+ //# sourceMappingURL=tenant-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-auth.d.ts","sourceRoot":"","sources":["../src/tenant-auth.ts"],"names":[],"mappings":"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"}
@@ -219,3 +219,4 @@ export class TenantAuthModule {
219
219
  return this.currentToken !== null;
220
220
  }
221
221
  }
222
+ //# sourceMappingURL=tenant-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-auth.js","sourceRoot":"","sources":["../src/tenant-auth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allanfsouza/aether-sdk",
3
- "version": "2.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "SDK do Cliente para a Plataforma Aether",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/ai.ts CHANGED
@@ -132,6 +132,32 @@ export interface GenerateOptions {
132
132
  context?: string;
133
133
  }
134
134
 
135
+ /**
136
+ * Informações de uso/quota
137
+ */
138
+ export interface UsageInfo {
139
+ requestsUsed: number;
140
+ requestsLimit: number;
141
+ tokensUsed: number;
142
+ tokensLimit: number;
143
+ percentUsed: number;
144
+ plan: string;
145
+ resetsAt: string;
146
+ }
147
+
148
+ /**
149
+ * Configuração de persona
150
+ */
151
+ export interface PersonaConfig {
152
+ name: string;
153
+ role: string;
154
+ personality?: string;
155
+ language?: string;
156
+ rules?: string[];
157
+ knowledge?: string[];
158
+ temperature?: number;
159
+ }
160
+
135
161
  // =============================================================================
136
162
  // MÓDULO PRINCIPAL
137
163
  // =============================================================================
@@ -143,6 +169,9 @@ export class AIModule {
143
169
  /** Sub-módulo para gerenciar conversas */
144
170
  public conversations: ConversationsAPI;
145
171
 
172
+ /** Sub-módulo para gerenciar memória de usuários */
173
+ public memory: MemoryAPI;
174
+
146
175
  /** Sub-módulo para funções administrativas */
147
176
  public admin: AIAdminAPI;
148
177
 
@@ -150,6 +179,7 @@ export class AIModule {
150
179
  this.client = client;
151
180
  this.http = http;
152
181
  this.conversations = new ConversationsAPI(client, http);
182
+ this.memory = new MemoryAPI(client, http);
153
183
  this.admin = new AIAdminAPI(client, http);
154
184
  }
155
185
 
@@ -425,6 +455,24 @@ export class AIModule {
425
455
  });
426
456
  return data;
427
457
  }
458
+
459
+ // ===========================================================================
460
+ // INFORMAÇÕES DE USO
461
+ // ===========================================================================
462
+
463
+ /**
464
+ * Retorna informações de uso e quota.
465
+ *
466
+ * @example
467
+ * const usage = await aether.ai.getUsage();
468
+ * console.log(`${usage.percentUsed}% do limite usado`);
469
+ */
470
+ async getUsage(): Promise<UsageInfo> {
471
+ const { data } = await this.http.get('/ai/usage', {
472
+ params: { projectId: this.client.projectId }
473
+ });
474
+ return data;
475
+ }
428
476
  }
429
477
 
430
478
  // =============================================================================
@@ -489,6 +537,78 @@ class ConversationsAPI {
489
537
  }
490
538
  }
491
539
 
540
+ // =============================================================================
541
+ // SUB-MÓDULO: MEMÓRIA DE USUÁRIO
542
+ // =============================================================================
543
+
544
+ class MemoryAPI {
545
+ private client: PlataformaClient;
546
+ private http: AxiosInstance;
547
+
548
+ constructor(client: PlataformaClient, http: AxiosInstance) {
549
+ this.client = client;
550
+ this.http = http;
551
+ }
552
+
553
+ /**
554
+ * Busca memória de um usuário.
555
+ *
556
+ * @example
557
+ * const prefs = await aether.ai.memory.get("user-123", "preferences");
558
+ */
559
+ async get(userId: string, key: string): Promise<any> {
560
+ const { data } = await this.http.get('/ai/memory', {
561
+ params: {
562
+ projectId: this.client.projectId,
563
+ userId,
564
+ key
565
+ }
566
+ });
567
+ return data.value;
568
+ }
569
+
570
+ /**
571
+ * Salva memória de um usuário.
572
+ *
573
+ * @example
574
+ * await aether.ai.memory.set("user-123", "preferences", { theme: "dark" });
575
+ */
576
+ async set(userId: string, key: string, value: any): Promise<void> {
577
+ await this.http.post('/ai/memory', {
578
+ projectId: this.client.projectId,
579
+ userId,
580
+ key,
581
+ value
582
+ });
583
+ }
584
+
585
+ /**
586
+ * Deleta memória de um usuário.
587
+ */
588
+ async delete(userId: string, key?: string): Promise<void> {
589
+ await this.http.delete('/ai/memory', {
590
+ params: {
591
+ projectId: this.client.projectId,
592
+ userId,
593
+ key
594
+ }
595
+ });
596
+ }
597
+
598
+ /**
599
+ * Lista todas as chaves de memória de um usuário.
600
+ */
601
+ async listKeys(userId: string): Promise<string[]> {
602
+ const { data } = await this.http.get('/ai/memory/keys', {
603
+ params: {
604
+ projectId: this.client.projectId,
605
+ userId
606
+ }
607
+ });
608
+ return data.keys || [];
609
+ }
610
+ }
611
+
492
612
  // =============================================================================
493
613
  // SUB-MÓDULO: ADMIN
494
614
  // =============================================================================
@@ -577,4 +697,32 @@ class AIAdminAPI {
577
697
  });
578
698
  return data;
579
699
  }
700
+
701
+ /**
702
+ * Configura a persona da IA para o projeto.
703
+ *
704
+ * @example
705
+ * await aether.ai.admin.setPersona({
706
+ * name: "Luna",
707
+ * role: "Assistente de Vendas",
708
+ * personality: "Amigável e usa emojis",
709
+ * rules: ["Sempre sugira produtos relacionados"]
710
+ * });
711
+ */
712
+ async setPersona(config: PersonaConfig): Promise<void> {
713
+ await this.http.post('/ai/persona', {
714
+ projectId: this.client.projectId,
715
+ ...config
716
+ });
717
+ }
718
+
719
+ /**
720
+ * Busca a persona configurada.
721
+ */
722
+ async getPersona(): Promise<PersonaConfig | null> {
723
+ const { data } = await this.http.get('/ai/persona', {
724
+ params: { projectId: this.client.projectId }
725
+ });
726
+ return data.persona || null;
727
+ }
580
728
  }
package/src/auth.ts CHANGED
@@ -1,8 +1,19 @@
1
1
  // src/auth.ts
2
+ // =============================================================================
3
+ // MÓDULO DE AUTENTICAÇÃO ADMINISTRATIVA
4
+ // =============================================================================
5
+ // ⚠️ USO EXCLUSIVO DO WEB-ADMIN - NÃO EXPOSTO NO SDK PÚBLICO
6
+ // Este módulo gerencia autenticação contra a tabela GLOBAL 'users' do Aether.
7
+ // Apps client-side devem usar TenantAuthModule (tenant-auth.ts).
8
+ // =============================================================================
9
+
10
+ import axios from "axios";
2
11
  import type { AxiosInstance } from "axios";
3
- import type { PlataformaClient } from "./index.js";
4
12
 
5
- // Exportando a interface User para o App usar
13
+ // =============================================================================
14
+ // INTERFACES
15
+ // =============================================================================
16
+
6
17
  export interface User {
7
18
  id: string;
8
19
  name: string;
@@ -28,20 +39,64 @@ export interface Session {
28
39
  expiresAt: string;
29
40
  }
30
41
 
42
+ // =============================================================================
43
+ // CONSTANTES DE STORAGE (separadas do SDK público para evitar conflito)
44
+ // =============================================================================
45
+ const ADMIN_STORAGE_KEYS = {
46
+ TOKEN: "aether_admin_token",
47
+ REFRESH_TOKEN: "aether_admin_refresh",
48
+ USER: "aether_admin_user",
49
+ } as const;
50
+
51
+ /**
52
+ * Verifica se estamos em ambiente browser com localStorage disponível.
53
+ */
54
+ function isBrowser(): boolean {
55
+ return (
56
+ typeof window !== "undefined" &&
57
+ typeof window.localStorage !== "undefined"
58
+ );
59
+ }
60
+
61
+ // =============================================================================
62
+ // CLASSE PRINCIPAL
63
+ // =============================================================================
64
+
31
65
  export class AuthModule {
32
- private client: PlataformaClient;
33
66
  private http: AxiosInstance;
67
+ private apiUrl: string;
34
68
 
35
- // Armazena o user em memória para acesso rápido
36
- // Persistência fica no PlataformaClient (localStorage)
69
+ // Armazena dados em memória para acesso rápido
37
70
  private currentUser: User | null = null;
71
+ private accessToken: string | null = null;
72
+ private refreshToken: string | null = null;
73
+
74
+ /**
75
+ * Cria uma instância do módulo de autenticação administrativa.
76
+ * @param apiUrl URL base da API do Aether (ex: https://api.aether.dev)
77
+ */
78
+ constructor(apiUrl: string) {
79
+ this.apiUrl = apiUrl.replace(/\/+$/, "");
80
+
81
+ // Cria instância HTTP dedicada para auth admin
82
+ this.http = axios.create({
83
+ baseURL: `${this.apiUrl}/v1`,
84
+ headers: {
85
+ "Content-Type": "application/json",
86
+ },
87
+ });
38
88
 
39
- constructor(client: PlataformaClient, http: AxiosInstance) {
40
- this.client = client;
41
- this.http = http;
89
+ // Interceptor para adicionar token em todas as requisições
90
+ this.http.interceptors.request.use((config) => {
91
+ const token = this.getToken();
92
+ if (token) {
93
+ config.headers.Authorization = `Bearer ${token}`;
94
+ }
95
+ return config;
96
+ });
42
97
 
43
- // Restaura user do localStorage se existir
44
- this.currentUser = this.client.getUser();
98
+ // Restaura sessão do localStorage se existir
99
+ this._restoreSession();
45
100
  }
46
101
 
47
102
  // ==========================================================================
@@ -56,18 +111,13 @@ export class AuthModule {
56
111
  });
57
112
 
58
113
  if (data.accessToken) {
59
- // Persiste automaticamente via PlataformaClient
60
- this.client.setToken(data.accessToken);
61
- this.client.setRefreshToken(data.refreshToken);
62
- this.client.setUser(data.user);
63
- this.currentUser = data.user;
114
+ this._setSession(data.accessToken, data.refreshToken, data.user);
64
115
  }
65
116
 
66
117
  return data;
67
118
  } catch (e) {
68
119
  // Limpa tudo em caso de erro
69
- this.client.clearSession();
70
- this.currentUser = null;
120
+ this.clearSession();
71
121
  throw e;
72
122
  }
73
123
  }
@@ -76,16 +126,16 @@ export class AuthModule {
76
126
  name: string;
77
127
  email: string;
78
128
  password: string;
79
- }) {
129
+ }): Promise<LoginResponse> {
80
130
  try {
81
- const { data } = await this.http.post("/auth/register", credentials);
131
+ const { data } = await this.http.post<LoginResponse>(
132
+ "/auth/register",
133
+ credentials
134
+ );
82
135
 
83
136
  // Se o register retornar token (auto-login), configura sessão
84
137
  if (data.accessToken) {
85
- this.client.setToken(data.accessToken);
86
- this.client.setRefreshToken(data.refreshToken);
87
- this.client.setUser(data.user);
88
- this.currentUser = data.user;
138
+ this._setSession(data.accessToken, data.refreshToken, data.user);
89
139
  }
90
140
 
91
141
  return data;
@@ -95,8 +145,7 @@ export class AuthModule {
95
145
  }
96
146
 
97
147
  async refresh(): Promise<{ accessToken: string }> {
98
- // Tenta pegar do localStorage primeiro, depois da memória
99
- const refreshToken = this.client.getRefreshToken() || this.getRefreshToken();
148
+ const refreshToken = this.getRefreshToken();
100
149
 
101
150
  if (!refreshToken) {
102
151
  throw new Error("Nenhum refresh token disponível");
@@ -108,29 +157,30 @@ export class AuthModule {
108
157
  });
109
158
 
110
159
  if (data.accessToken) {
111
- this.client.setToken(data.accessToken);
160
+ this.accessToken = data.accessToken;
161
+ this._persistToken();
112
162
 
113
163
  // Se vier novo refresh token, atualiza
114
164
  if (data.refreshToken) {
115
- this.client.setRefreshToken(data.refreshToken);
165
+ this.refreshToken = data.refreshToken;
166
+ this._persistRefreshToken();
116
167
  }
117
168
  }
118
169
 
119
170
  return data;
120
171
  } catch (e) {
121
172
  // Token expirado - limpa sessão
122
- this.client.clearSession();
123
- this.currentUser = null;
173
+ this.clearSession();
124
174
  throw e;
125
175
  }
126
176
  }
127
177
 
128
178
  getGoogleAuthUrl(): string {
129
- return `${this.client.apiUrl}/v1/auth/google`;
179
+ return `${this.apiUrl}/v1/auth/google`;
130
180
  }
131
181
 
132
182
  async logout(): Promise<void> {
133
- const refreshToken = this.client.getRefreshToken();
183
+ const refreshToken = this.getRefreshToken();
134
184
 
135
185
  if (refreshToken) {
136
186
  try {
@@ -141,16 +191,14 @@ export class AuthModule {
141
191
  }
142
192
 
143
193
  // Limpa tudo (memória + localStorage)
144
- this.client.clearSession();
145
- this.currentUser = null;
194
+ this.clearSession();
146
195
  }
147
196
 
148
197
  async logoutAll(): Promise<void> {
149
198
  try {
150
199
  await this.http.post("/auth/logout-all");
151
200
  } finally {
152
- this.client.clearSession();
153
- this.currentUser = null;
201
+ this.clearSession();
154
202
  }
155
203
  }
156
204
 
@@ -174,18 +222,34 @@ export class AuthModule {
174
222
  return data;
175
223
  }
176
224
 
225
+ // ==========================================================================
226
+ // GETTERS DE SESSÃO
227
+ // ==========================================================================
228
+
229
+ getToken(): string | null {
230
+ return this.accessToken;
231
+ }
232
+
233
+ getRefreshToken(): string | null {
234
+ return this.refreshToken;
235
+ }
236
+
237
+ getUser(): User | null {
238
+ return this.currentUser;
239
+ }
240
+
177
241
  /**
178
- * @deprecated Use client.getRefreshToken() - mantido para compatibilidade
242
+ * Alias para getUser() - compatibilidade com código existente.
179
243
  */
180
- getRefreshToken(): string | null {
181
- return this.client.getRefreshToken();
244
+ getCurrentUser(): User | null {
245
+ return this.currentUser;
182
246
  }
183
247
 
184
248
  /**
185
- * @deprecated Use client.setRefreshToken() - mantido para compatibilidade
249
+ * Verifica se existe uma sessão ativa.
186
250
  */
187
- setRefreshToken(token: string | null) {
188
- this.client.setRefreshToken(token);
251
+ isAuthenticated(): boolean {
252
+ return this.accessToken !== null && this.currentUser !== null;
189
253
  }
190
254
 
191
255
  // ==========================================================================
@@ -238,7 +302,7 @@ export class AuthModule {
238
302
  * Se não encontrar, retorna null.
239
303
  */
240
304
  async getSession() {
241
- const token = this.client.getToken();
305
+ const token = this.getToken();
242
306
  if (!token) return null;
243
307
 
244
308
  // Tenta memória primeiro
@@ -249,38 +313,105 @@ export class AuthModule {
249
313
  };
250
314
  }
251
315
 
252
- // Tenta localStorage
253
- const savedUser = this.client.getUser();
254
- if (savedUser) {
255
- this.currentUser = savedUser;
256
- return {
257
- user: savedUser,
258
- access_token: token,
259
- };
260
- }
261
-
262
316
  // Última opção: valida token no backend
263
317
  try {
264
318
  const { data } = await this.http.get<{ user: User }>("/auth/me");
265
319
  this.currentUser = data.user;
266
- this.client.setUser(data.user);
320
+ this._persistUser();
267
321
  return {
268
322
  user: data.user,
269
323
  access_token: token,
270
324
  };
271
325
  } catch {
272
326
  // Token inválido/expirado - limpa sessão
273
- this.client.clearSession();
274
- this.currentUser = null;
327
+ this.clearSession();
275
328
  return null;
276
329
  }
277
330
  }
278
331
 
279
- /**
280
- * Retorna o usuário atual (sem validar token).
281
- * Útil para acesso síncrono aos dados do usuário.
282
- */
283
- getCurrentUser(): User | null {
284
- return this.currentUser || this.client.getUser();
332
+ // ==========================================================================
333
+ // GERENCIAMENTO DE SESSÃO (INTERNO)
334
+ // ==========================================================================
335
+
336
+ clearSession(): void {
337
+ this.accessToken = null;
338
+ this.refreshToken = null;
339
+ this.currentUser = null;
340
+
341
+ if (isBrowser()) {
342
+ localStorage.removeItem(ADMIN_STORAGE_KEYS.TOKEN);
343
+ localStorage.removeItem(ADMIN_STORAGE_KEYS.REFRESH_TOKEN);
344
+ localStorage.removeItem(ADMIN_STORAGE_KEYS.USER);
345
+ }
346
+ }
347
+
348
+ private _setSession(
349
+ token: string,
350
+ refresh: string,
351
+ user: User
352
+ ): void {
353
+ this.accessToken = token;
354
+ this.refreshToken = refresh;
355
+ this.currentUser = user;
356
+ this._persistAll();
357
+ }
358
+
359
+ private _persistAll(): void {
360
+ this._persistToken();
361
+ this._persistRefreshToken();
362
+ this._persistUser();
363
+ }
364
+
365
+ private _persistToken(): void {
366
+ if (isBrowser() && this.accessToken) {
367
+ localStorage.setItem(ADMIN_STORAGE_KEYS.TOKEN, this.accessToken);
368
+ }
369
+ }
370
+
371
+ private _persistRefreshToken(): void {
372
+ if (isBrowser() && this.refreshToken) {
373
+ localStorage.setItem(ADMIN_STORAGE_KEYS.REFRESH_TOKEN, this.refreshToken);
374
+ }
285
375
  }
376
+
377
+ private _persistUser(): void {
378
+ if (isBrowser() && this.currentUser) {
379
+ localStorage.setItem(
380
+ ADMIN_STORAGE_KEYS.USER,
381
+ JSON.stringify(this.currentUser)
382
+ );
383
+ }
384
+ }
385
+
386
+ private _restoreSession(): void {
387
+ if (!isBrowser()) return;
388
+
389
+ const token = localStorage.getItem(ADMIN_STORAGE_KEYS.TOKEN);
390
+ const refresh = localStorage.getItem(ADMIN_STORAGE_KEYS.REFRESH_TOKEN);
391
+ const userJson = localStorage.getItem(ADMIN_STORAGE_KEYS.USER);
392
+
393
+ if (token) this.accessToken = token;
394
+ if (refresh) this.refreshToken = refresh;
395
+
396
+ if (userJson) {
397
+ try {
398
+ this.currentUser = JSON.parse(userJson);
399
+ } catch {
400
+ // JSON inválido - limpa o dado corrompido
401
+ localStorage.removeItem(ADMIN_STORAGE_KEYS.USER);
402
+ }
403
+ }
404
+ }
405
+ }
406
+
407
+ // =============================================================================
408
+ // FACTORY FUNCTION (Alternativa ao construtor)
409
+ // =============================================================================
410
+
411
+ /**
412
+ * Cria uma instância do módulo de autenticação administrativa.
413
+ * Uso: const auth = createAdminAuth("https://api.aether.dev");
414
+ */
415
+ export function createAdminAuth(apiUrl: string): AuthModule {
416
+ return new AuthModule(apiUrl);
286
417
  }