@aether-baas/core 3.0.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 (49) hide show
  1. package/dist/adapters/storage.d.ts +126 -0
  2. package/dist/adapters/storage.d.ts.map +1 -0
  3. package/dist/adapters/storage.js +299 -0
  4. package/dist/adapters/storage.js.map +1 -0
  5. package/dist/client/index.d.ts +172 -0
  6. package/dist/client/index.d.ts.map +1 -0
  7. package/dist/client/index.js +409 -0
  8. package/dist/client/index.js.map +1 -0
  9. package/dist/errors/index.d.ts +251 -0
  10. package/dist/errors/index.d.ts.map +1 -0
  11. package/dist/errors/index.js +542 -0
  12. package/dist/errors/index.js.map +1 -0
  13. package/dist/http/client.d.ts +40 -0
  14. package/dist/http/client.d.ts.map +1 -0
  15. package/dist/http/client.js +247 -0
  16. package/dist/http/client.js.map +1 -0
  17. package/dist/index.d.ts +21 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +44 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/modules/ai.d.ts +165 -0
  22. package/dist/modules/ai.d.ts.map +1 -0
  23. package/dist/modules/ai.js +330 -0
  24. package/dist/modules/ai.js.map +1 -0
  25. package/dist/modules/database.d.ts +187 -0
  26. package/dist/modules/database.d.ts.map +1 -0
  27. package/dist/modules/database.js +428 -0
  28. package/dist/modules/database.js.map +1 -0
  29. package/dist/modules/functions.d.ts +48 -0
  30. package/dist/modules/functions.d.ts.map +1 -0
  31. package/dist/modules/functions.js +83 -0
  32. package/dist/modules/functions.js.map +1 -0
  33. package/dist/modules/push.d.ts +174 -0
  34. package/dist/modules/push.d.ts.map +1 -0
  35. package/dist/modules/push.js +181 -0
  36. package/dist/modules/push.js.map +1 -0
  37. package/dist/modules/storage.d.ts +69 -0
  38. package/dist/modules/storage.d.ts.map +1 -0
  39. package/dist/modules/storage.js +151 -0
  40. package/dist/modules/storage.js.map +1 -0
  41. package/dist/modules/tenant-auth.d.ts +167 -0
  42. package/dist/modules/tenant-auth.d.ts.map +1 -0
  43. package/dist/modules/tenant-auth.js +341 -0
  44. package/dist/modules/tenant-auth.js.map +1 -0
  45. package/dist/types/index.d.ts +470 -0
  46. package/dist/types/index.d.ts.map +1 -0
  47. package/dist/types/index.js +19 -0
  48. package/dist/types/index.js.map +1 -0
  49. package/package.json +80 -0
@@ -0,0 +1,409 @@
1
+ // =============================================================================
2
+ // @aether/core - PlataformaClient
3
+ // =============================================================================
4
+ // Cliente principal do Aether SDK.
5
+ //
6
+ // RETROCOMPATIBILIDADE: Este arquivo mantém 100% de compatibilidade com
7
+ // versões anteriores do SDK. A API pública é idêntica.
8
+ //
9
+ // MUDANÇAS INTERNAS:
10
+ // - Usa StorageAdapter em vez de localStorage direto
11
+ // - Suporta React Native (AsyncStorage) e SSR (cookies/memória)
12
+ // =============================================================================
13
+ import { createHttpClient } from '../http/client.js';
14
+ import { BrowserStorageAdapter, MemoryStorageAdapter, isLocalStorageAvailable, } from '../adapters/storage.js';
15
+ // =============================================================================
16
+ // CONSTANTES DE STORAGE
17
+ // Chaves padronizadas - evita conflito com outros SDKs
18
+ // =============================================================================
19
+ const STORAGE_KEYS = {
20
+ TOKEN: 'aether_token',
21
+ REFRESH_TOKEN: 'aether_refresh_token',
22
+ USER: 'aether_user',
23
+ };
24
+ // =============================================================================
25
+ // CLIENTE PRINCIPAL
26
+ // =============================================================================
27
+ /**
28
+ * Cliente principal do Aether SDK.
29
+ * Ponto de entrada para todas as funcionalidades.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { PlataformaClient } from '@aether/core';
34
+ *
35
+ * const aether = new PlataformaClient({
36
+ * baseUrl: 'https://api.aether.dev',
37
+ * apiKey: 'seu-project-id',
38
+ * });
39
+ *
40
+ * // Database
41
+ * const users = await aether.db.collection('users').list();
42
+ *
43
+ * // Auth
44
+ * await aether.tenantAuth.signIn({ email, password });
45
+ *
46
+ * // Storage
47
+ * await aether.storage.upload(file, 'avatar.png');
48
+ * ```
49
+ */
50
+ export class PlataformaClient {
51
+ // ===========================================================================
52
+ // MÓDULOS PÚBLICOS
53
+ // ===========================================================================
54
+ /** Módulo de banco de dados */
55
+ db;
56
+ /** Alias para db (compatibilidade com showcase) */
57
+ database;
58
+ /** Módulo de storage (arquivos) */
59
+ storage;
60
+ /** Módulo de functions serverless */
61
+ functions;
62
+ /** Módulo de push notifications */
63
+ push;
64
+ /** Módulo de auth para usuários de apps (tenant) */
65
+ tenantAuth;
66
+ /** Módulo de IA */
67
+ ai;
68
+ // ===========================================================================
69
+ // PROPRIEDADES PÚBLICAS
70
+ // ===========================================================================
71
+ /** URL base da API */
72
+ apiUrl;
73
+ /** ID do projeto */
74
+ projectId;
75
+ /** API Key de serviço */
76
+ serviceApiKey = null;
77
+ /** Cliente HTTP configurado */
78
+ http;
79
+ // ===========================================================================
80
+ // PROPRIEDADES PRIVADAS
81
+ // ===========================================================================
82
+ /** Token de acesso atual */
83
+ _token = null;
84
+ /** Se deve persistir sessão */
85
+ _persistSession;
86
+ /** Adapter de storage */
87
+ _storage;
88
+ /** Prefixo para chaves de storage */
89
+ _storagePrefix;
90
+ /** Se os módulos foram inicializados */
91
+ _initialized = false;
92
+ // ===========================================================================
93
+ // CONSTRUCTOR
94
+ // ===========================================================================
95
+ constructor(config) {
96
+ // Resolve URL (prioridade para baseUrl se existir, senão apiUrl)
97
+ const url = config.baseUrl || config.apiUrl;
98
+ const project = config.apiKey || config.projectId;
99
+ if (!url || !project) {
100
+ throw new Error('[Aether] baseUrl (ou apiUrl) e apiKey (ou projectId) são obrigatórios.');
101
+ }
102
+ this.apiUrl = url.replace(/\/+$/, '');
103
+ this.projectId = project;
104
+ this.serviceApiKey = config.serviceApiKey || null;
105
+ // Configura prefixo de storage
106
+ this._storagePrefix = config.storagePrefix ?? '';
107
+ // Configura persistência
108
+ // Padrão: true em browsers com localStorage, false em SSR
109
+ this._persistSession = config.persistSession ?? isLocalStorageAvailable();
110
+ // Cria adapter de storage apropriado para o ambiente
111
+ this._storage = this._createStorageAdapter();
112
+ // Restaura sessão ANTES de criar o httpClient
113
+ // Isso garante que requisições iniciais já tenham o token
114
+ this._restoreSession();
115
+ // Cria HTTP client
116
+ this.http = createHttpClient(this);
117
+ // Inicializa módulos
118
+ this._initializeModules();
119
+ }
120
+ // ===========================================================================
121
+ // INICIALIZAÇÃO
122
+ // ===========================================================================
123
+ /**
124
+ * Cria o adapter de storage apropriado para o ambiente.
125
+ */
126
+ _createStorageAdapter() {
127
+ if (!this._persistSession) {
128
+ return new MemoryStorageAdapter();
129
+ }
130
+ if (isLocalStorageAvailable()) {
131
+ return new BrowserStorageAdapter({ prefix: this._storagePrefix });
132
+ }
133
+ // Fallback para memória se localStorage não disponível
134
+ return new MemoryStorageAdapter();
135
+ }
136
+ /**
137
+ * Inicializa os módulos do SDK.
138
+ * Usa import dinâmico para evitar circular dependencies.
139
+ */
140
+ async _initializeModules() {
141
+ if (this._initialized)
142
+ return;
143
+ try {
144
+ // Imports dinâmicos dos módulos
145
+ const [{ DatabaseModule }, { StorageModule }, { FunctionsModule }, { PushModule }, { TenantAuthModule }, { AIModule },] = await Promise.all([
146
+ import('../modules/database.js'),
147
+ import('../modules/storage.js'),
148
+ import('../modules/functions.js'),
149
+ import('../modules/push.js'),
150
+ import('../modules/tenant-auth.js'),
151
+ import('../modules/ai.js'),
152
+ ]);
153
+ this.db = new DatabaseModule(this, this.http);
154
+ this.database = this.db; // Alias
155
+ this.storage = new StorageModule(this, this.http);
156
+ this.functions = new FunctionsModule(this, this.http);
157
+ this.push = new PushModule(this, this.http);
158
+ this.tenantAuth = new TenantAuthModule(this, this.http, this._storage);
159
+ this.ai = new AIModule(this, this.http);
160
+ this._initialized = true;
161
+ }
162
+ catch (error) {
163
+ console.error('[Aether] Erro ao inicializar módulos:', error);
164
+ throw error;
165
+ }
166
+ }
167
+ // ===========================================================================
168
+ // TOKEN DE ACESSO (implementa TokenProvider)
169
+ // ===========================================================================
170
+ /**
171
+ * Define o token de acesso (JWT).
172
+ * Se persistSession estiver ativo, salva no storage.
173
+ */
174
+ setToken(token) {
175
+ this._token = token;
176
+ if (this._persistSession) {
177
+ if (token) {
178
+ this._setStorageItem(STORAGE_KEYS.TOKEN, token);
179
+ }
180
+ else {
181
+ this._removeStorageItem(STORAGE_KEYS.TOKEN);
182
+ }
183
+ }
184
+ }
185
+ /**
186
+ * Retorna o token de acesso atual.
187
+ */
188
+ getToken() {
189
+ return this._token;
190
+ }
191
+ // ===========================================================================
192
+ // REFRESH TOKEN
193
+ // ===========================================================================
194
+ /**
195
+ * Salva o refresh token.
196
+ */
197
+ setRefreshToken(token) {
198
+ if (this._persistSession) {
199
+ if (token) {
200
+ this._setStorageItem(STORAGE_KEYS.REFRESH_TOKEN, token);
201
+ }
202
+ else {
203
+ this._removeStorageItem(STORAGE_KEYS.REFRESH_TOKEN);
204
+ }
205
+ }
206
+ }
207
+ /**
208
+ * Retorna o refresh token.
209
+ */
210
+ getRefreshToken() {
211
+ if (this._persistSession) {
212
+ return this._getStorageItem(STORAGE_KEYS.REFRESH_TOKEN);
213
+ }
214
+ return null;
215
+ }
216
+ // ===========================================================================
217
+ // USER DATA (TENANT USER)
218
+ // ===========================================================================
219
+ /**
220
+ * Salva dados do usuário tenant no storage.
221
+ */
222
+ setUser(user) {
223
+ if (this._persistSession) {
224
+ if (user) {
225
+ this._setStorageItem(STORAGE_KEYS.USER, JSON.stringify(user));
226
+ }
227
+ else {
228
+ this._removeStorageItem(STORAGE_KEYS.USER);
229
+ }
230
+ }
231
+ }
232
+ /**
233
+ * Retorna dados do usuário tenant.
234
+ */
235
+ getUser() {
236
+ if (this._persistSession) {
237
+ try {
238
+ const raw = this._getStorageItem(STORAGE_KEYS.USER);
239
+ if (raw) {
240
+ return JSON.parse(raw);
241
+ }
242
+ }
243
+ catch {
244
+ // JSON inválido - limpa o dado corrompido
245
+ this._removeStorageItem(STORAGE_KEYS.USER);
246
+ }
247
+ }
248
+ return null;
249
+ }
250
+ // ===========================================================================
251
+ // GERENCIAMENTO DE SESSÃO
252
+ // ===========================================================================
253
+ /**
254
+ * Limpa toda a sessão (token, refresh, user).
255
+ */
256
+ clearSession() {
257
+ this._token = null;
258
+ this._removeStorageItem(STORAGE_KEYS.TOKEN);
259
+ this._removeStorageItem(STORAGE_KEYS.REFRESH_TOKEN);
260
+ this._removeStorageItem(STORAGE_KEYS.USER);
261
+ // Emite evento de sessão limpa
262
+ if (typeof window !== 'undefined') {
263
+ window.dispatchEvent(new CustomEvent('aether:session-cleared'));
264
+ }
265
+ }
266
+ /**
267
+ * Verifica se existe uma sessão salva.
268
+ */
269
+ hasSession() {
270
+ return this._token !== null;
271
+ }
272
+ /**
273
+ * Verifica se está autenticado (tem token E user).
274
+ */
275
+ isAuthenticated() {
276
+ return this._token !== null && this.getUser() !== null;
277
+ }
278
+ /**
279
+ * Restaura sessão do storage ao inicializar.
280
+ */
281
+ _restoreSession() {
282
+ if (!this._persistSession) {
283
+ return;
284
+ }
285
+ const savedToken = this._getStorageItem(STORAGE_KEYS.TOKEN);
286
+ if (savedToken) {
287
+ this._token = savedToken;
288
+ }
289
+ }
290
+ // ===========================================================================
291
+ // STORAGE HELPERS (abstrai sync/async)
292
+ // ===========================================================================
293
+ /**
294
+ * Obtém item do storage (sync).
295
+ * Para adapters async, usa versão síncrona se disponível.
296
+ */
297
+ _getStorageItem(key) {
298
+ const result = this._storage.getItem(key);
299
+ // Se for Promise, retorna null (operação síncrona não pode esperar)
300
+ // O valor será carregado na próxima vez
301
+ if (result instanceof Promise) {
302
+ result.then((value) => {
303
+ if (key === STORAGE_KEYS.TOKEN && value) {
304
+ this._token = value;
305
+ }
306
+ });
307
+ return null;
308
+ }
309
+ return result;
310
+ }
311
+ /**
312
+ * Define item no storage (fire and forget para async).
313
+ */
314
+ _setStorageItem(key, value) {
315
+ const result = this._storage.setItem(key, value);
316
+ // Se for Promise, ignora (fire and forget)
317
+ if (result instanceof Promise) {
318
+ result.catch((error) => {
319
+ console.warn('[Aether] Erro ao salvar no storage:', error);
320
+ });
321
+ }
322
+ }
323
+ /**
324
+ * Remove item do storage (fire and forget para async).
325
+ */
326
+ _removeStorageItem(key) {
327
+ const result = this._storage.removeItem(key);
328
+ if (result instanceof Promise) {
329
+ result.catch((error) => {
330
+ console.warn('[Aether] Erro ao remover do storage:', error);
331
+ });
332
+ }
333
+ }
334
+ // ===========================================================================
335
+ // CONFIGURAÇÃO DO STORAGE ADAPTER
336
+ // ===========================================================================
337
+ /**
338
+ * Define um adapter de storage customizado.
339
+ * Útil para React Native (AsyncStorage) ou SSR (cookies).
340
+ *
341
+ * @example
342
+ * ```typescript
343
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
344
+ *
345
+ * aether.setStorageAdapter({
346
+ * getItem: (key) => AsyncStorage.getItem(key),
347
+ * setItem: (key, value) => AsyncStorage.setItem(key, value),
348
+ * removeItem: (key) => AsyncStorage.removeItem(key),
349
+ * });
350
+ * ```
351
+ */
352
+ setStorageAdapter(adapter) {
353
+ this._storage = adapter;
354
+ // Re-restaura sessão com novo adapter
355
+ this._restoreSession();
356
+ }
357
+ /**
358
+ * Retorna o adapter de storage atual.
359
+ */
360
+ getStorageAdapter() {
361
+ return this._storage;
362
+ }
363
+ }
364
+ // =============================================================================
365
+ // FACTORY FUNCTION
366
+ // =============================================================================
367
+ /**
368
+ * Cria uma instância do PlataformaClient.
369
+ * Alias para `new PlataformaClient(config)`.
370
+ */
371
+ export function createClient(config) {
372
+ return new PlataformaClient(config);
373
+ }
374
+ // =============================================================================
375
+ // SINGLETON (opcional)
376
+ // =============================================================================
377
+ let _instance = null;
378
+ /**
379
+ * Inicializa e retorna uma instância singleton do client.
380
+ * Útil para apps simples que só precisam de uma instância.
381
+ */
382
+ export function initializeClient(config) {
383
+ if (_instance) {
384
+ console.warn('[Aether] Client já foi inicializado. Retornando instância existente.');
385
+ return _instance;
386
+ }
387
+ _instance = new PlataformaClient(config);
388
+ return _instance;
389
+ }
390
+ /**
391
+ * Retorna a instância singleton do client.
392
+ * Deve ser chamado após initializeClient().
393
+ */
394
+ export function getClient() {
395
+ if (!_instance) {
396
+ throw new Error('[Aether] Client não foi inicializado. Chame initializeClient() primeiro.');
397
+ }
398
+ return _instance;
399
+ }
400
+ /**
401
+ * Destrói a instância singleton.
402
+ */
403
+ export function destroyClient() {
404
+ if (_instance) {
405
+ _instance.clearSession();
406
+ _instance = null;
407
+ }
408
+ }
409
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Códigos de erro padronizados do Aether.
3
+ */
4
+ export declare const AetherErrorCodes: {
5
+ readonly UNKNOWN: "UNKNOWN";
6
+ readonly NETWORK_ERROR: "NETWORK_ERROR";
7
+ readonly TIMEOUT: "TIMEOUT";
8
+ readonly INVALID_REQUEST: "INVALID_REQUEST";
9
+ readonly INTERNAL_ERROR: "INTERNAL_ERROR";
10
+ readonly INVALID_CREDENTIALS: "INVALID_CREDENTIALS";
11
+ readonly EMAIL_ALREADY_EXISTS: "EMAIL_ALREADY_EXISTS";
12
+ readonly USER_NOT_FOUND: "USER_NOT_FOUND";
13
+ readonly SESSION_EXPIRED: "SESSION_EXPIRED";
14
+ readonly TOKEN_EXPIRED: "TOKEN_EXPIRED";
15
+ readonly TOKEN_INVALID: "TOKEN_INVALID";
16
+ readonly REFRESH_TOKEN_EXPIRED: "REFRESH_TOKEN_EXPIRED";
17
+ readonly UNAUTHORIZED: "UNAUTHORIZED";
18
+ readonly FORBIDDEN: "FORBIDDEN";
19
+ readonly DOCUMENT_NOT_FOUND: "DOCUMENT_NOT_FOUND";
20
+ readonly COLLECTION_NOT_FOUND: "COLLECTION_NOT_FOUND";
21
+ readonly PERMISSION_DENIED: "PERMISSION_DENIED";
22
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
23
+ readonly DUPLICATE_KEY: "DUPLICATE_KEY";
24
+ readonly QUOTA_EXCEEDED: "QUOTA_EXCEEDED";
25
+ readonly FILE_NOT_FOUND: "FILE_NOT_FOUND";
26
+ readonly FILE_TOO_LARGE: "FILE_TOO_LARGE";
27
+ readonly INVALID_FILE_TYPE: "INVALID_FILE_TYPE";
28
+ readonly UPLOAD_FAILED: "UPLOAD_FAILED";
29
+ readonly STORAGE_QUOTA_EXCEEDED: "STORAGE_QUOTA_EXCEEDED";
30
+ readonly FUNCTION_NOT_FOUND: "FUNCTION_NOT_FOUND";
31
+ readonly FUNCTION_TIMEOUT: "FUNCTION_TIMEOUT";
32
+ readonly FUNCTION_ERROR: "FUNCTION_ERROR";
33
+ readonly DEVICE_NOT_REGISTERED: "DEVICE_NOT_REGISTERED";
34
+ readonly PUSH_FAILED: "PUSH_FAILED";
35
+ readonly INVALID_TOKEN: "INVALID_TOKEN";
36
+ readonly AI_QUOTA_EXCEEDED: "AI_QUOTA_EXCEEDED";
37
+ readonly AI_RATE_LIMITED: "AI_RATE_LIMITED";
38
+ readonly AI_CONTEXT_TOO_LONG: "AI_CONTEXT_TOO_LONG";
39
+ readonly API_KEY_INVALID: "API_KEY_INVALID";
40
+ readonly API_KEY_EXPIRED: "API_KEY_EXPIRED";
41
+ readonly API_KEY_MISSING: "API_KEY_MISSING";
42
+ readonly RATE_LIMIT_EXCEEDED: "RATE_LIMIT_EXCEEDED";
43
+ };
44
+ export type AetherErrorCode = (typeof AetherErrorCodes)[keyof typeof AetherErrorCodes];
45
+ /**
46
+ * Detalhes adicionais de um erro.
47
+ */
48
+ export interface AetherErrorDetails {
49
+ /** Campo que causou o erro (para erros de validação) */
50
+ field?: string;
51
+ /** Valor que causou o erro */
52
+ value?: unknown;
53
+ /** Erros de validação múltiplos */
54
+ errors?: Array<{
55
+ field: string;
56
+ message: string;
57
+ }>;
58
+ /** Informações de rate limit */
59
+ rateLimit?: {
60
+ limit: number;
61
+ remaining: number;
62
+ resetAt: string;
63
+ };
64
+ /** Informações de quota */
65
+ quota?: {
66
+ used: number;
67
+ limit: number;
68
+ percentUsed: number;
69
+ upgradeUrl?: string;
70
+ };
71
+ /** Dados extras do servidor */
72
+ [key: string]: unknown;
73
+ }
74
+ /**
75
+ * Classe base de erro do Aether SDK.
76
+ * Todos os erros do SDK estendem esta classe.
77
+ */
78
+ export declare class AetherError extends Error {
79
+ /** Código padronizado do erro */
80
+ readonly code: AetherErrorCode;
81
+ /** Status HTTP (se aplicável) */
82
+ readonly status?: number;
83
+ /** Detalhes adicionais */
84
+ readonly details?: AetherErrorDetails;
85
+ /** Se o erro pode ser retentado */
86
+ readonly retryable: boolean;
87
+ /** Dica para resolver o problema */
88
+ readonly hint?: string;
89
+ /** Timestamp do erro */
90
+ readonly timestamp: string;
91
+ constructor(message: string, options?: {
92
+ code?: AetherErrorCode;
93
+ status?: number;
94
+ details?: AetherErrorDetails;
95
+ retryable?: boolean;
96
+ hint?: string;
97
+ cause?: Error;
98
+ });
99
+ /**
100
+ * Verifica se um erro é um AetherError.
101
+ */
102
+ static isAetherError(error: unknown): error is AetherError;
103
+ /**
104
+ * Cria um AetherError a partir de qualquer erro.
105
+ */
106
+ static from(error: unknown): AetherError;
107
+ /**
108
+ * Serializa o erro para JSON.
109
+ */
110
+ toJSON(): Record<string, unknown>;
111
+ /**
112
+ * Representação em string.
113
+ */
114
+ toString(): string;
115
+ }
116
+ /**
117
+ * Erro de autenticação.
118
+ */
119
+ export declare class AuthError extends AetherError {
120
+ constructor(message: string, options?: {
121
+ code?: AetherErrorCode;
122
+ status?: number;
123
+ details?: AetherErrorDetails;
124
+ hint?: string;
125
+ cause?: Error;
126
+ });
127
+ static isAuthError(error: unknown): error is AuthError;
128
+ static invalidCredentials(): AuthError;
129
+ static emailExists(email: string): AuthError;
130
+ static sessionExpired(): AuthError;
131
+ static tokenExpired(): AuthError;
132
+ static unauthorized(): AuthError;
133
+ static forbidden(): AuthError;
134
+ }
135
+ /**
136
+ * Erro de banco de dados.
137
+ */
138
+ export declare class DatabaseError extends AetherError {
139
+ constructor(message: string, options?: {
140
+ code?: AetherErrorCode;
141
+ status?: number;
142
+ details?: AetherErrorDetails;
143
+ hint?: string;
144
+ cause?: Error;
145
+ });
146
+ static isDatabaseError(error: unknown): error is DatabaseError;
147
+ static notFound(collection: string, id?: string): DatabaseError;
148
+ static permissionDenied(collection: string): DatabaseError;
149
+ static validationFailed(errors: Array<{
150
+ field: string;
151
+ message: string;
152
+ }>): DatabaseError;
153
+ static duplicateKey(field: string, value: unknown): DatabaseError;
154
+ static quotaExceeded(): DatabaseError;
155
+ }
156
+ /**
157
+ * Erro de storage (arquivos).
158
+ */
159
+ export declare class StorageError extends AetherError {
160
+ constructor(message: string, options?: {
161
+ code?: AetherErrorCode;
162
+ status?: number;
163
+ details?: AetherErrorDetails;
164
+ hint?: string;
165
+ cause?: Error;
166
+ retryable?: boolean;
167
+ });
168
+ static isStorageError(error: unknown): error is StorageError;
169
+ static fileNotFound(path: string): StorageError;
170
+ static fileTooLarge(size: number, maxSize: number): StorageError;
171
+ static invalidFileType(type: string, allowed: string[]): StorageError;
172
+ static uploadFailed(reason?: string): StorageError;
173
+ static quotaExceeded(): StorageError;
174
+ }
175
+ /**
176
+ * Erro de rede/conexão.
177
+ */
178
+ export declare class NetworkError extends AetherError {
179
+ constructor(message: string, options?: {
180
+ code?: AetherErrorCode;
181
+ status?: number;
182
+ details?: AetherErrorDetails;
183
+ hint?: string;
184
+ cause?: Error;
185
+ });
186
+ static isNetworkError(error: unknown): error is NetworkError;
187
+ static timeout(): NetworkError;
188
+ static offline(): NetworkError;
189
+ static connectionFailed(): NetworkError;
190
+ }
191
+ /**
192
+ * Erro de functions (serverless).
193
+ */
194
+ export declare class FunctionError extends AetherError {
195
+ constructor(message: string, options?: {
196
+ code?: AetherErrorCode;
197
+ status?: number;
198
+ details?: AetherErrorDetails;
199
+ hint?: string;
200
+ cause?: Error;
201
+ retryable?: boolean;
202
+ });
203
+ static isFunctionError(error: unknown): error is FunctionError;
204
+ static notFound(name: string): FunctionError;
205
+ static timeout(name: string): FunctionError;
206
+ static executionFailed(name: string, reason?: string): FunctionError;
207
+ }
208
+ /**
209
+ * Erro de rate limit.
210
+ */
211
+ export declare class RateLimitError extends AetherError {
212
+ readonly resetAt: Date;
213
+ readonly limit: number;
214
+ readonly remaining: number;
215
+ constructor(message: string, options: {
216
+ resetAt: Date | string;
217
+ limit: number;
218
+ remaining: number;
219
+ hint?: string;
220
+ });
221
+ static isRateLimitError(error: unknown): error is RateLimitError;
222
+ /**
223
+ * Tempo em ms até o reset.
224
+ */
225
+ getRetryAfter(): number;
226
+ }
227
+ /**
228
+ * Erro de AI/quota.
229
+ */
230
+ export declare class AIError extends AetherError {
231
+ constructor(message: string, options?: {
232
+ code?: AetherErrorCode;
233
+ status?: number;
234
+ details?: AetherErrorDetails;
235
+ hint?: string;
236
+ cause?: Error;
237
+ });
238
+ static isAIError(error: unknown): error is AIError;
239
+ static quotaExceeded(quota: {
240
+ used: number;
241
+ limit: number;
242
+ upgradeUrl?: string;
243
+ }): AIError;
244
+ static rateLimited(resetAt: string): AIError;
245
+ }
246
+ /**
247
+ * Alias para retrocompatibilidade com código existente.
248
+ * @deprecated Use as classes específicas (AuthError, DatabaseError, etc)
249
+ */
250
+ export { AetherError as default };
251
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}