@aether-baas/core 3.1.7 → 3.3.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.
@@ -0,0 +1,187 @@
1
+ import { PlataformaClient } from './client/index.js';
2
+ import type { ClientConfig } from './types/index.js';
3
+ /**
4
+ * Aether SDK namespace - Firebase-like global access pattern.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { aether } from '@aether-baas/core';
9
+ *
10
+ * // Initialize once
11
+ * aether.initialize({ baseUrl: '...', apiKey: '...' });
12
+ *
13
+ * // Use anywhere
14
+ * const user = await aether.auth.signIn('email', 'password');
15
+ * const routes = await aether.db.collection('routes').list();
16
+ * const result = await aether.functions.invoke('calculate-freight', data);
17
+ * ```
18
+ */
19
+ export interface Aether {
20
+ /**
21
+ * Initialize the Aether SDK.
22
+ * Must be called once before using any other modules.
23
+ */
24
+ initialize(config: ClientConfig): PlataformaClient;
25
+ /**
26
+ * Check if SDK is initialized and ready.
27
+ */
28
+ isReady(): boolean;
29
+ /**
30
+ * Get the underlying client instance.
31
+ */
32
+ getClient(): PlataformaClient | null;
33
+ /**
34
+ * Destroy the client and clean up resources.
35
+ */
36
+ destroy(): void;
37
+ /**
38
+ * Authentication module.
39
+ * @example aether.auth.signIn(email, password)
40
+ */
41
+ readonly auth: AetherAuthNamespace;
42
+ /**
43
+ * Database module.
44
+ * @example aether.db.collection('users').list()
45
+ */
46
+ readonly db: AetherDbNamespace;
47
+ /**
48
+ * Serverless functions module.
49
+ * @example aether.functions.invoke('send-email', { to, subject })
50
+ */
51
+ readonly functions: AetherFunctionsNamespace;
52
+ /**
53
+ * Storage module.
54
+ * @example aether.storage.upload('avatar', file)
55
+ */
56
+ readonly storage: AetherStorageNamespace;
57
+ /**
58
+ * AI module.
59
+ * @example aether.ai.ask('What is the weather?')
60
+ */
61
+ readonly ai: AetherAINamespace;
62
+ }
63
+ export interface AetherAuthNamespace {
64
+ /** Sign in with email and password */
65
+ signIn(email: string, password: string): Promise<any>;
66
+ /** Sign up new user */
67
+ signUp(email: string, password: string, name?: string): Promise<any>;
68
+ /** Sign out current user */
69
+ signOut(): Promise<void>;
70
+ /** Get current authenticated user */
71
+ getCurrentUser(): any | null;
72
+ /** Check if user is authenticated */
73
+ isAuthenticated(): boolean;
74
+ /** Get OAuth URL for provider */
75
+ getOAuthUrl(provider: 'google' | 'github'): Promise<string>;
76
+ /** Subscribe to auth state changes */
77
+ onAuthStateChange(callback: (user: any | null) => void): () => void;
78
+ }
79
+ export interface AetherDbNamespace {
80
+ /** Get collection reference */
81
+ collection<T = any>(name: string): CollectionRef<T>;
82
+ }
83
+ export interface CollectionRef<T> {
84
+ /** Create a new document */
85
+ create(data: Partial<T>): Promise<T>;
86
+ /** Get document by ID */
87
+ get(id: string): Promise<T | null>;
88
+ /** Update document */
89
+ update(id: string, data: Partial<T>): Promise<T>;
90
+ /** Delete document */
91
+ delete(id: string): Promise<void>;
92
+ /** List documents with optional filters */
93
+ list(options?: ListOptions): Promise<T[]>;
94
+ /** Subscribe to realtime updates */
95
+ subscribe(callback: (docs: T[]) => void): () => void;
96
+ }
97
+ export interface ListOptions {
98
+ filter?: Record<string, any>;
99
+ sort?: {
100
+ field: string;
101
+ direction: 'asc' | 'desc';
102
+ };
103
+ limit?: number;
104
+ offset?: number;
105
+ }
106
+ export interface AetherFunctionsNamespace {
107
+ /**
108
+ * Invoke a serverless function.
109
+ * Returns data directly or throws on error (Firebase pattern).
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const result = await aether.functions.invoke('calculate-freight', {
114
+ * km: 150,
115
+ * vehicleType: 'PASSEIO'
116
+ * });
117
+ * // result is the data directly, throws if error
118
+ * ```
119
+ */
120
+ invoke<T = any>(functionName: string, payload?: unknown): Promise<T>;
121
+ /**
122
+ * Invoke with full response (data + error).
123
+ * For cases where you want to handle errors manually.
124
+ */
125
+ invokeWithResponse<T = any>(functionName: string, payload?: unknown): Promise<{
126
+ data: T | null;
127
+ error: string | null;
128
+ }>;
129
+ /** List available functions */
130
+ list(): Promise<Array<{
131
+ name: string;
132
+ description?: string;
133
+ }>>;
134
+ }
135
+ export interface AetherStorageNamespace {
136
+ /** Upload a file */
137
+ upload(path: string, file: File | Blob | ArrayBuffer): Promise<{
138
+ url: string;
139
+ }>;
140
+ /** Download file URL */
141
+ getUrl(path: string): Promise<string>;
142
+ /** Delete file */
143
+ delete(path: string): Promise<void>;
144
+ /** List files in directory */
145
+ list(path?: string): Promise<Array<{
146
+ name: string;
147
+ size: number;
148
+ url: string;
149
+ }>>;
150
+ }
151
+ export interface AetherAINamespace {
152
+ /** Ask AI a question */
153
+ ask(question: string, context?: string): Promise<{
154
+ answer: string;
155
+ sources?: any[];
156
+ }>;
157
+ /** Semantic search */
158
+ search(query: string, options?: {
159
+ collection?: string;
160
+ limit?: number;
161
+ }): Promise<any[]>;
162
+ /** Generate embeddings */
163
+ embed(text: string): Promise<number[]>;
164
+ }
165
+ /**
166
+ * Global Aether SDK instance.
167
+ * Firebase-like namespace pattern for enterprise DX.
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * import { aether } from '@aether-baas/core';
172
+ *
173
+ * // Initialize once (usually in your app's entry point)
174
+ * aether.initialize({
175
+ * baseUrl: 'https://api.aether.app',
176
+ * apiKey: 'your-project-id',
177
+ * });
178
+ *
179
+ * // Use anywhere in your app
180
+ * const user = await aether.auth.signIn('user@email.com', 'password');
181
+ * const routes = await aether.db.collection('routes').list();
182
+ * const freight = await aether.functions.invoke('calculate-freight', { km: 150 });
183
+ * ```
184
+ */
185
+ export declare const aether: Aether;
186
+ export type { Aether as AetherInstance };
187
+ //# sourceMappingURL=aether.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aether.d.ts","sourceRoot":"","sources":["../src/aether.ts"],"names":[],"mappings":"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"}
package/dist/aether.js ADDED
@@ -0,0 +1,214 @@
1
+ // =============================================================================
2
+ // @aether/core - Global Aether Singleton
3
+ // =============================================================================
4
+ // Firebase-like namespace pattern for enterprise DX.
5
+ //
6
+ // Usage:
7
+ // import { aether } from '@aether-baas/core';
8
+ //
9
+ // await aether.auth.signIn(email, password);
10
+ // await aether.db.collection('users').get(id);
11
+ // await aether.functions.invoke('send-email', { to, subject });
12
+ // await aether.storage.upload('avatar', file);
13
+ // =============================================================================
14
+ import { initializeClient, destroyClient } from './client/index.js';
15
+ // =============================================================================
16
+ // AETHER SINGLETON IMPLEMENTATION
17
+ // =============================================================================
18
+ function createAetherNamespace() {
19
+ // Internal client reference
20
+ let _client = null;
21
+ // Helper to ensure client is ready
22
+ const requireClient = () => {
23
+ if (!_client) {
24
+ throw new Error('[Aether] SDK not initialized. Call aether.initialize() first.');
25
+ }
26
+ return _client;
27
+ };
28
+ // =========================================================================
29
+ // AUTH NAMESPACE IMPLEMENTATION
30
+ // =========================================================================
31
+ const auth = {
32
+ async signIn(email, password) {
33
+ return requireClient().tenantAuth.signIn({ email, password });
34
+ },
35
+ async signUp(email, password, name) {
36
+ return requireClient().tenantAuth.signUp({ email, password, data: { name: name || '' } });
37
+ },
38
+ async signOut() {
39
+ await requireClient().tenantAuth.signOut();
40
+ },
41
+ getCurrentUser() {
42
+ return _client?.tenantAuth.getUser() || null;
43
+ },
44
+ isAuthenticated() {
45
+ return !!_client?.tenantAuth.getUser();
46
+ },
47
+ async getOAuthUrl(provider) {
48
+ const client = requireClient();
49
+ if (provider === 'google') {
50
+ return client.tenantAuth.getGoogleAuthUrl();
51
+ }
52
+ return client.tenantAuth.getGitHubAuthUrl();
53
+ },
54
+ onAuthStateChange(callback) {
55
+ return requireClient().tenantAuth.onAuthStateChange((event, user) => {
56
+ callback(user);
57
+ });
58
+ },
59
+ };
60
+ // =========================================================================
61
+ // DB NAMESPACE IMPLEMENTATION
62
+ // =========================================================================
63
+ const db = {
64
+ collection(name) {
65
+ return {
66
+ async create(data) {
67
+ return requireClient().database.collection(name).create(data);
68
+ },
69
+ async get(id) {
70
+ return requireClient().database.collection(name).get(id);
71
+ },
72
+ async update(id, data) {
73
+ return requireClient().database.collection(name).update(id, data);
74
+ },
75
+ async delete(id) {
76
+ await requireClient().database.collection(name).delete(id);
77
+ },
78
+ async list(options) {
79
+ // Transform sort options to match DB module format
80
+ const dbOptions = options ? {
81
+ ...options,
82
+ sort: options.sort ? {
83
+ field: options.sort.field,
84
+ order: options.sort.direction === 'asc' ? 'ASC' : 'DESC'
85
+ } : undefined
86
+ } : undefined;
87
+ return requireClient().database.collection(name).list(dbOptions);
88
+ },
89
+ subscribe(callback) {
90
+ return requireClient().database.collection(name).subscribe(callback);
91
+ },
92
+ };
93
+ },
94
+ };
95
+ // =========================================================================
96
+ // FUNCTIONS NAMESPACE IMPLEMENTATION
97
+ // =========================================================================
98
+ const functions = {
99
+ async invoke(functionName, payload) {
100
+ // Use .call() which returns data directly and throws on error
101
+ return requireClient().functions.call(functionName, payload);
102
+ },
103
+ async invokeWithResponse(functionName, payload) {
104
+ const result = await requireClient().functions.invoke(functionName, payload);
105
+ return {
106
+ data: result.data,
107
+ error: result.error,
108
+ };
109
+ },
110
+ async list() {
111
+ return requireClient().functions.list();
112
+ },
113
+ };
114
+ // =========================================================================
115
+ // STORAGE NAMESPACE IMPLEMENTATION
116
+ // =========================================================================
117
+ const storage = {
118
+ async upload(fileName, file) {
119
+ // Extract file name and content type
120
+ const contentType = file instanceof File ? file.type : 'application/octet-stream';
121
+ const result = await requireClient().storage.upload(file, fileName, contentType);
122
+ if (result.error || !result.data) {
123
+ throw new Error(result.error || 'Upload failed');
124
+ }
125
+ return { url: result.data.downloadUrl || '' };
126
+ },
127
+ async getUrl(path) {
128
+ return requireClient().storage.getPublicUrl(path);
129
+ },
130
+ async delete(path) {
131
+ await requireClient().storage.delete(path);
132
+ },
133
+ async list(path) {
134
+ const files = await requireClient().storage.list(path || '/');
135
+ return files.map(f => ({
136
+ name: f.name,
137
+ size: f.size,
138
+ url: f.downloadUrl || ''
139
+ }));
140
+ },
141
+ };
142
+ // =========================================================================
143
+ // AI NAMESPACE IMPLEMENTATION
144
+ // =========================================================================
145
+ const ai = {
146
+ async ask(question, context) {
147
+ const response = await requireClient().ai.ask(question, context);
148
+ return {
149
+ answer: response.text,
150
+ sources: response.sources
151
+ };
152
+ },
153
+ async search(query, options) {
154
+ return requireClient().ai.search(query, options);
155
+ },
156
+ async embed(_text) {
157
+ // Note: Embed functionality not yet implemented in AI module
158
+ throw new Error('AI embeddings not yet implemented. Use search for semantic similarity.');
159
+ },
160
+ };
161
+ // =========================================================================
162
+ // RETURN AETHER OBJECT
163
+ // =========================================================================
164
+ return {
165
+ initialize(config) {
166
+ if (_client) {
167
+ console.warn('[Aether] SDK already initialized. Destroying previous instance.');
168
+ destroyClient();
169
+ }
170
+ _client = initializeClient(config);
171
+ return _client;
172
+ },
173
+ isReady() {
174
+ return _client !== null;
175
+ },
176
+ getClient() {
177
+ return _client;
178
+ },
179
+ destroy() {
180
+ destroyClient();
181
+ _client = null;
182
+ },
183
+ auth,
184
+ db,
185
+ functions,
186
+ storage,
187
+ ai,
188
+ };
189
+ }
190
+ // =============================================================================
191
+ // EXPORT SINGLETON
192
+ // =============================================================================
193
+ /**
194
+ * Global Aether SDK instance.
195
+ * Firebase-like namespace pattern for enterprise DX.
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * import { aether } from '@aether-baas/core';
200
+ *
201
+ * // Initialize once (usually in your app's entry point)
202
+ * aether.initialize({
203
+ * baseUrl: 'https://api.aether.app',
204
+ * apiKey: 'your-project-id',
205
+ * });
206
+ *
207
+ * // Use anywhere in your app
208
+ * const user = await aether.auth.signIn('user@email.com', 'password');
209
+ * const routes = await aether.db.collection('routes').list();
210
+ * const freight = await aether.functions.invoke('calculate-freight', { km: 150 });
211
+ * ```
212
+ */
213
+ export const aether = createAetherNamespace();
214
+ //# sourceMappingURL=aether.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aether.js","sourceRoot":"","sources":["../src/aether.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { QueryCache, getQueryCache, resetQueryCache } from './query-cache.js';
2
+ export type { CacheOptions } from './query-cache.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // =============================================================================
2
+ // @aether/core - Cache Module Index
3
+ // =============================================================================
4
+ export { QueryCache, getQueryCache, resetQueryCache } from './query-cache.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Opções do cache.
3
+ */
4
+ export interface CacheOptions {
5
+ /** TTL em milissegundos (padrão: 5 minutos) */
6
+ ttl?: number;
7
+ /** Tamanho máximo do cache (padrão: 100 entradas) */
8
+ maxSize?: number;
9
+ /** Se deve usar stale-while-revalidate */
10
+ staleWhileRevalidate?: boolean;
11
+ }
12
+ /**
13
+ * Cache de queries com TTL e invalidação.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const cache = new QueryCache({ ttl: 60000 }); // 1 minuto
18
+ *
19
+ * // Set
20
+ * cache.set('users:list', users);
21
+ *
22
+ * // Get (retorna null se expirado)
23
+ * const cached = cache.get('users:list');
24
+ *
25
+ * // Invalidate
26
+ * cache.invalidate('users:*'); // Invalida todos que começam com 'users:'
27
+ * ```
28
+ */
29
+ export declare class QueryCache {
30
+ private cache;
31
+ private ttl;
32
+ private maxSize;
33
+ private staleWhileRevalidate;
34
+ constructor(options?: CacheOptions);
35
+ /**
36
+ * Gera chave de cache para uma query.
37
+ */
38
+ static createKey(collection: string, options?: Record<string, unknown>): string;
39
+ /**
40
+ * Obtém valor do cache.
41
+ * Retorna null se não existir ou estiver expirado.
42
+ */
43
+ get<T>(key: string): T | null;
44
+ /**
45
+ * Verifica se cache está stale (expirado mas ainda válido para SWR).
46
+ */
47
+ isStale(key: string): boolean;
48
+ /**
49
+ * Define valor no cache.
50
+ */
51
+ set<T>(key: string, data: T): void;
52
+ /**
53
+ * Atualiza timestamp de uma entrada existente.
54
+ */
55
+ touch(key: string): void;
56
+ /**
57
+ * Invalida entradas que correspondem ao padrão.
58
+ * Suporta wildcard no final (ex: 'users:*').
59
+ */
60
+ invalidate(pattern: string): number;
61
+ /**
62
+ * Invalida todas as entradas de uma collection.
63
+ */
64
+ invalidateCollection(collection: string): number;
65
+ /**
66
+ * Limpa todo o cache.
67
+ */
68
+ clear(): void;
69
+ /**
70
+ * Retorna estatísticas do cache.
71
+ */
72
+ stats(): {
73
+ size: number;
74
+ maxSize: number;
75
+ ttl: number;
76
+ entries: Array<{
77
+ key: string;
78
+ age: number;
79
+ stale: boolean;
80
+ }>;
81
+ };
82
+ /**
83
+ * Remove a entrada mais antiga (LRU).
84
+ */
85
+ private evictOldest;
86
+ }
87
+ /**
88
+ * Obtém a instância global do cache.
89
+ */
90
+ export declare function getQueryCache(options?: CacheOptions): QueryCache;
91
+ /**
92
+ * Reseta o cache global (útil para testes).
93
+ */
94
+ export declare function resetQueryCache(): void;
95
+ //# sourceMappingURL=query-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/cache/query-cache.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAAU;gBAE1B,OAAO,GAAE,YAAiB;IAMtC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAa/E;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAsB7B;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ7B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAalC;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOxB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBnC;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIhD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAChE;IAgBD;;OAEG;IACH,OAAO,CAAC,WAAW;CAatB;AAQD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAKhE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
@@ -0,0 +1,184 @@
1
+ // =============================================================================
2
+ // @aether/core - Query Cache
3
+ // =============================================================================
4
+ // Cache com TTL para queries do banco de dados.
5
+ // Reduz requisições e melhora performance significativamente.
6
+ // =============================================================================
7
+ /**
8
+ * Cache de queries com TTL e invalidação.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const cache = new QueryCache({ ttl: 60000 }); // 1 minuto
13
+ *
14
+ * // Set
15
+ * cache.set('users:list', users);
16
+ *
17
+ * // Get (retorna null se expirado)
18
+ * const cached = cache.get('users:list');
19
+ *
20
+ * // Invalidate
21
+ * cache.invalidate('users:*'); // Invalida todos que começam com 'users:'
22
+ * ```
23
+ */
24
+ export class QueryCache {
25
+ cache = new Map();
26
+ ttl;
27
+ maxSize;
28
+ staleWhileRevalidate;
29
+ constructor(options = {}) {
30
+ this.ttl = options.ttl ?? 5 * 60 * 1000; // 5 minutos
31
+ this.maxSize = options.maxSize ?? 100;
32
+ this.staleWhileRevalidate = options.staleWhileRevalidate ?? true;
33
+ }
34
+ /**
35
+ * Gera chave de cache para uma query.
36
+ */
37
+ static createKey(collection, options) {
38
+ const base = `query:${collection}`;
39
+ if (!options || Object.keys(options).length === 0) {
40
+ return base;
41
+ }
42
+ // Sort keys para consistência
43
+ const sorted = Object.keys(options).sort().reduce((acc, key) => {
44
+ acc[key] = options[key];
45
+ return acc;
46
+ }, {});
47
+ return `${base}:${JSON.stringify(sorted)}`;
48
+ }
49
+ /**
50
+ * Obtém valor do cache.
51
+ * Retorna null se não existir ou estiver expirado.
52
+ */
53
+ get(key) {
54
+ const entry = this.cache.get(key);
55
+ if (!entry) {
56
+ return null;
57
+ }
58
+ const age = Date.now() - entry.timestamp;
59
+ const isExpired = age > this.ttl;
60
+ if (isExpired) {
61
+ // Se stale-while-revalidate está ativo, retorna stale mas marca para refresh
62
+ if (!this.staleWhileRevalidate) {
63
+ this.cache.delete(key);
64
+ return null;
65
+ }
66
+ // Retorna data stale (caller deve revalidar)
67
+ }
68
+ return entry.data;
69
+ }
70
+ /**
71
+ * Verifica se cache está stale (expirado mas ainda válido para SWR).
72
+ */
73
+ isStale(key) {
74
+ const entry = this.cache.get(key);
75
+ if (!entry)
76
+ return true;
77
+ const age = Date.now() - entry.timestamp;
78
+ return age > this.ttl;
79
+ }
80
+ /**
81
+ * Define valor no cache.
82
+ */
83
+ set(key, data) {
84
+ // Limpa cache se atingiu tamanho máximo (LRU simples)
85
+ if (this.cache.size >= this.maxSize) {
86
+ this.evictOldest();
87
+ }
88
+ this.cache.set(key, {
89
+ data,
90
+ timestamp: Date.now(),
91
+ key,
92
+ });
93
+ }
94
+ /**
95
+ * Atualiza timestamp de uma entrada existente.
96
+ */
97
+ touch(key) {
98
+ const entry = this.cache.get(key);
99
+ if (entry) {
100
+ entry.timestamp = Date.now();
101
+ }
102
+ }
103
+ /**
104
+ * Invalida entradas que correspondem ao padrão.
105
+ * Suporta wildcard no final (ex: 'users:*').
106
+ */
107
+ invalidate(pattern) {
108
+ let count = 0;
109
+ const isWildcard = pattern.endsWith('*');
110
+ const prefix = isWildcard ? pattern.slice(0, -1) : pattern;
111
+ for (const key of this.cache.keys()) {
112
+ const matches = isWildcard ? key.startsWith(prefix) : key === pattern;
113
+ if (matches) {
114
+ this.cache.delete(key);
115
+ count++;
116
+ }
117
+ }
118
+ return count;
119
+ }
120
+ /**
121
+ * Invalida todas as entradas de uma collection.
122
+ */
123
+ invalidateCollection(collection) {
124
+ return this.invalidate(`query:${collection}*`);
125
+ }
126
+ /**
127
+ * Limpa todo o cache.
128
+ */
129
+ clear() {
130
+ this.cache.clear();
131
+ }
132
+ /**
133
+ * Retorna estatísticas do cache.
134
+ */
135
+ stats() {
136
+ const now = Date.now();
137
+ const entries = Array.from(this.cache.entries()).map(([key, entry]) => ({
138
+ key,
139
+ age: now - entry.timestamp,
140
+ stale: (now - entry.timestamp) > this.ttl,
141
+ }));
142
+ return {
143
+ size: this.cache.size,
144
+ maxSize: this.maxSize,
145
+ ttl: this.ttl,
146
+ entries,
147
+ };
148
+ }
149
+ /**
150
+ * Remove a entrada mais antiga (LRU).
151
+ */
152
+ evictOldest() {
153
+ let oldest = null;
154
+ for (const [key, entry] of this.cache.entries()) {
155
+ if (!oldest || entry.timestamp < oldest.timestamp) {
156
+ oldest = { key, timestamp: entry.timestamp };
157
+ }
158
+ }
159
+ if (oldest) {
160
+ this.cache.delete(oldest.key);
161
+ }
162
+ }
163
+ }
164
+ // =============================================================================
165
+ // SINGLETON GLOBAL
166
+ // =============================================================================
167
+ let _globalCache = null;
168
+ /**
169
+ * Obtém a instância global do cache.
170
+ */
171
+ export function getQueryCache(options) {
172
+ if (!_globalCache) {
173
+ _globalCache = new QueryCache(options);
174
+ }
175
+ return _globalCache;
176
+ }
177
+ /**
178
+ * Reseta o cache global (útil para testes).
179
+ */
180
+ export function resetQueryCache() {
181
+ _globalCache?.clear();
182
+ _globalCache = null;
183
+ }
184
+ //# sourceMappingURL=query-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-cache.js","sourceRoot":"","sources":["../../src/cache/query-cache.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,11 +13,14 @@ export { createHttpClient } from './http/client.js';
13
13
  export type { RetryConfig, TokenProvider } from './http/client.js';
14
14
  export type { PartialBy, RequiredBy, NonNullableFields, StringKeyOf, User, LoginResponse, Session, TenantUser, TenantLoginCredentials, TenantRegisterCredentials, TenantLoginResponse, OAuthProvider, AuthState, AuthChangeEvent, AuthStateChangeCallback, BaseDocument, Document, CreateData, UpdateData, FilterOperator, FilterCondition, SortDirection, SortOption, PaginationOptions, QueryOptions, PaginatedResult, ListOptions, BatchOperation, RealtimeEvent, RealtimePayload, RealtimeCallback, Unsubscribe, RealtimeConnectionState, FileObject, UploadOptions, UploadProgress, ListFilesOptions, InvokeFunctionOptions, FunctionResult, PushPlatform, PushEnvironment, PushDevice, RegisterDeviceParams, SendPushParams, PushNotificationData, PushStatus, PushStats, AIMessageRole, AIMessage, AISource, AIAskOptions, AIChatOptions, AIChatMetadata, AIResponse, AIUsageInfo, AIPersonaConfig, ClientConfig, SuccessResult, ErrorResult, Result, } from './types/index.js';
15
15
  export { success, failure } from './types/index.js';
16
+ export { QueryCache, getQueryCache, resetQueryCache } from './cache/index.js';
17
+ export type { CacheOptions } from './cache/index.js';
16
18
  export type { SendPushResponse, PushLogEntry, ListPushLogsOptions, PushTriggerEvent, PushTriggerCondition, LookupFieldConfig, PushTrigger, CreatePushTriggerParams, } from './modules/push.js';
17
19
  export type { ChatOptions, AskResponse, Conversation, Message, FeedbackType, SemanticSearchOptions, SemanticSearchResult, GenerateOptions, } from './modules/ai.js';
18
20
  export type { SignInWithPasswordCredentials, SignUpCredentials, } from './modules/tenant-auth.js';
19
21
  export { detectEnvironment, isBrowser as isBrowserEnv, isReactNative, isNode, hasCustomEvent, hasLocalStorage as hasLocalStorageEnv, hasDom, hasWebSocket, hasFetch, safeDispatchEvent, safeConsole, } from './utils/environment.js';
20
22
  export type { RuntimeEnvironment } from './utils/environment.js';
21
- export declare const VERSION = "3.1.6";
23
+ export { aether, type Aether, type AetherInstance, type AetherAuthNamespace, type AetherDbNamespace, type AetherFunctionsNamespace, type AetherStorageNamespace, type AetherAINamespace, type CollectionRef, type ListOptions as AetherListOptions, } from './aether.js';
24
+ export declare const VERSION = "3.3.0";
22
25
  export { PlataformaClient as default } from './client/index.js';
23
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -34,13 +34,21 @@ export { BrowserStorageAdapter, MemoryStorageAdapter, CookieStorageAdapter, Noop
34
34
  export { createHttpClient } from './http/client.js';
35
35
  export { success, failure } from './types/index.js';
36
36
  // =============================================================================
37
+ // CACHE
38
+ // =============================================================================
39
+ export { QueryCache, getQueryCache, resetQueryCache } from './cache/index.js';
40
+ // =============================================================================
37
41
  // ENVIRONMENT UTILS
38
42
  // =============================================================================
39
43
  export { detectEnvironment, isBrowser as isBrowserEnv, isReactNative, isNode, hasCustomEvent, hasLocalStorage as hasLocalStorageEnv, hasDom, hasWebSocket, hasFetch, safeDispatchEvent, safeConsole, } from './utils/environment.js';
40
44
  // =============================================================================
45
+ // AETHER SINGLETON (Firebase-like namespace pattern)
46
+ // =============================================================================
47
+ export { aether, } from './aether.js';
48
+ // =============================================================================
41
49
  // VERSION
42
50
  // =============================================================================
43
- export const VERSION = '3.1.6';
51
+ export const VERSION = '3.3.0';
44
52
  // =============================================================================
45
53
  // DEFAULT EXPORT
46
54
  // =============================================================================
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAChF,6DAA6D;AAC7D,GAAG;AACH,mEAAmE;AACnE,oEAAoE;AACpE,wDAAwD;AACxD,gFAAgF;AAEhF,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAA0C,MAAM,uBAAuB,CAAC;AAE/F,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,OAAO,GACR,MAAM,mBAAmB,CAAC;AAI3B,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,SAAS,EACT,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAI/B,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAyFpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAyCpD,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,SAAS,IAAI,YAAY,EACzB,aAAa,EACb,MAAM,EACN,cAAc,EACd,eAAe,IAAI,kBAAkB,EACrC,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAIhC,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAChF,6DAA6D;AAC7D,GAAG;AACH,mEAAmE;AACnE,oEAAoE;AACpE,wDAAwD;AACxD,gFAAgF;AAEhF,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAA0C,MAAM,uBAAuB,CAAC;AAE/F,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,OAAO,GACR,MAAM,mBAAmB,CAAC;AAI3B,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,SAAS,EACT,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAI/B,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAyFpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEpD,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA0C9E,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,SAAS,IAAI,YAAY,EACzB,aAAa,EACb,MAAM,EACN,cAAc,EACd,eAAe,IAAI,kBAAkB,EACrC,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAIhC,gFAAgF;AAChF,qDAAqD;AACrD,gFAAgF;AAEhF,OAAO,EACL,MAAM,GAUP,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aether-baas/core",
3
- "version": "3.1.7",
4
- "description": "Aether SDK Core - Cliente principal para Aether BaaS",
3
+ "version": "3.3.0",
4
+ "description": "Aether SDK Core - Firebase-like namespace pattern with aether.auth, aether.db, aether.functions",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",