@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.
- package/dist/adapters/storage.d.ts +126 -0
- package/dist/adapters/storage.d.ts.map +1 -0
- package/dist/adapters/storage.js +299 -0
- package/dist/adapters/storage.js.map +1 -0
- package/dist/client/index.d.ts +172 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +409 -0
- package/dist/client/index.js.map +1 -0
- package/dist/errors/index.d.ts +251 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +542 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/http/client.d.ts +40 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +247 -0
- package/dist/http/client.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/ai.d.ts +165 -0
- package/dist/modules/ai.d.ts.map +1 -0
- package/dist/modules/ai.js +330 -0
- package/dist/modules/ai.js.map +1 -0
- package/dist/modules/database.d.ts +187 -0
- package/dist/modules/database.d.ts.map +1 -0
- package/dist/modules/database.js +428 -0
- package/dist/modules/database.js.map +1 -0
- package/dist/modules/functions.d.ts +48 -0
- package/dist/modules/functions.d.ts.map +1 -0
- package/dist/modules/functions.js +83 -0
- package/dist/modules/functions.js.map +1 -0
- package/dist/modules/push.d.ts +174 -0
- package/dist/modules/push.d.ts.map +1 -0
- package/dist/modules/push.js +181 -0
- package/dist/modules/push.js.map +1 -0
- package/dist/modules/storage.d.ts +69 -0
- package/dist/modules/storage.d.ts.map +1 -0
- package/dist/modules/storage.js +151 -0
- package/dist/modules/storage.js.map +1 -0
- package/dist/modules/tenant-auth.d.ts +167 -0
- package/dist/modules/tenant-auth.d.ts.map +1 -0
- package/dist/modules/tenant-auth.js +341 -0
- package/dist/modules/tenant-auth.js.map +1 -0
- package/dist/types/index.d.ts +470 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
import type { PlataformaClient } from '../client/index.js';
|
|
3
|
+
import type { PushPlatform, PushEnvironment, PushDevice, RegisterDeviceParams, PushStats } from '../types/index.js';
|
|
4
|
+
export interface SendPushResponse {
|
|
5
|
+
sent: number;
|
|
6
|
+
total: number;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export type PushStatus = 'sent' | 'failed';
|
|
10
|
+
export interface PushLogEntry {
|
|
11
|
+
id: string;
|
|
12
|
+
projectId: string;
|
|
13
|
+
userId?: string | null;
|
|
14
|
+
deviceId?: string | null;
|
|
15
|
+
title: string;
|
|
16
|
+
body: string;
|
|
17
|
+
data: Record<string, string>;
|
|
18
|
+
status: PushStatus;
|
|
19
|
+
errorMessage?: string | null;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ListPushLogsOptions {
|
|
23
|
+
limit?: number;
|
|
24
|
+
offset?: number;
|
|
25
|
+
status?: PushStatus;
|
|
26
|
+
}
|
|
27
|
+
export type PushTriggerEvent = 'create' | 'update' | 'delete';
|
|
28
|
+
export interface PushTriggerCondition {
|
|
29
|
+
equals?: unknown;
|
|
30
|
+
notEquals?: unknown;
|
|
31
|
+
in?: unknown[];
|
|
32
|
+
notIn?: unknown[];
|
|
33
|
+
exists?: boolean;
|
|
34
|
+
gt?: number;
|
|
35
|
+
gte?: number;
|
|
36
|
+
lt?: number;
|
|
37
|
+
lte?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface LookupFieldConfig {
|
|
40
|
+
collection: string;
|
|
41
|
+
foreignKey: string;
|
|
42
|
+
fields: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface PushTrigger {
|
|
45
|
+
id: string;
|
|
46
|
+
projectId: string;
|
|
47
|
+
name: string;
|
|
48
|
+
description: string | null;
|
|
49
|
+
collectionName: string;
|
|
50
|
+
event: PushTriggerEvent;
|
|
51
|
+
conditions: Record<string, PushTriggerCondition>;
|
|
52
|
+
lookupFields: Record<string, LookupFieldConfig>;
|
|
53
|
+
targetUserField: string;
|
|
54
|
+
titleTemplate: string;
|
|
55
|
+
bodyTemplate: string;
|
|
56
|
+
dataTemplate: Record<string, unknown>;
|
|
57
|
+
enabled: boolean;
|
|
58
|
+
priority: string;
|
|
59
|
+
timesTriggered: number;
|
|
60
|
+
lastTriggeredAt: string | null;
|
|
61
|
+
createdAt: string;
|
|
62
|
+
updatedAt: string;
|
|
63
|
+
}
|
|
64
|
+
export interface CreatePushTriggerParams {
|
|
65
|
+
name: string;
|
|
66
|
+
description?: string;
|
|
67
|
+
collectionName: string;
|
|
68
|
+
event: PushTriggerEvent;
|
|
69
|
+
conditions?: Record<string, PushTriggerCondition>;
|
|
70
|
+
lookupFields?: Record<string, LookupFieldConfig>;
|
|
71
|
+
targetUserField: string;
|
|
72
|
+
titleTemplate: string;
|
|
73
|
+
bodyTemplate: string;
|
|
74
|
+
dataTemplate?: Record<string, unknown>;
|
|
75
|
+
enabled?: boolean;
|
|
76
|
+
priority?: string;
|
|
77
|
+
}
|
|
78
|
+
export type { PushPlatform, PushEnvironment, PushDevice, RegisterDeviceParams, PushStats };
|
|
79
|
+
/**
|
|
80
|
+
* Módulo de push notifications do Aether.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Registrar dispositivo
|
|
85
|
+
* await aether.push.registerDevice({
|
|
86
|
+
* token: 'fcm-token',
|
|
87
|
+
* platform: 'android',
|
|
88
|
+
* environment: 'prod'
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* // Enviar para usuário
|
|
92
|
+
* await aether.push.sendToUser({
|
|
93
|
+
* userId: 'user-id',
|
|
94
|
+
* title: 'Olá!',
|
|
95
|
+
* body: 'Nova mensagem'
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare class PushModule {
|
|
100
|
+
private client;
|
|
101
|
+
private http;
|
|
102
|
+
constructor(client: PlataformaClient, http: AxiosInstance);
|
|
103
|
+
/**
|
|
104
|
+
* Obtém a chave pública VAPID para Web Push.
|
|
105
|
+
*/
|
|
106
|
+
getVapidKey(): Promise<{
|
|
107
|
+
publicKey: string;
|
|
108
|
+
}>;
|
|
109
|
+
/**
|
|
110
|
+
* Registra um dispositivo para receber push notifications.
|
|
111
|
+
*/
|
|
112
|
+
registerDevice(params: RegisterDeviceParams): Promise<PushDevice>;
|
|
113
|
+
/**
|
|
114
|
+
* Remove registro de dispositivo.
|
|
115
|
+
*/
|
|
116
|
+
unregisterDevice(deviceId: string): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Lista dispositivos do usuário atual.
|
|
119
|
+
*/
|
|
120
|
+
listDevices(): Promise<PushDevice[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Envia notificação para um usuário específico.
|
|
123
|
+
*/
|
|
124
|
+
sendToUser(params: {
|
|
125
|
+
userId: string;
|
|
126
|
+
title: string;
|
|
127
|
+
body: string;
|
|
128
|
+
data?: Record<string, string>;
|
|
129
|
+
environment?: PushEnvironment;
|
|
130
|
+
}): Promise<SendPushResponse>;
|
|
131
|
+
/**
|
|
132
|
+
* Envia notificação para múltiplos usuários.
|
|
133
|
+
*/
|
|
134
|
+
sendToMany(params: {
|
|
135
|
+
userIds: string[];
|
|
136
|
+
title: string;
|
|
137
|
+
body: string;
|
|
138
|
+
data?: Record<string, string>;
|
|
139
|
+
environment?: PushEnvironment;
|
|
140
|
+
}): Promise<SendPushResponse>;
|
|
141
|
+
/**
|
|
142
|
+
* Lista logs de push notifications.
|
|
143
|
+
*/
|
|
144
|
+
listLogs(options?: ListPushLogsOptions): Promise<PushLogEntry[]>;
|
|
145
|
+
/**
|
|
146
|
+
* Obtém estatísticas de push.
|
|
147
|
+
*/
|
|
148
|
+
getStats(): Promise<PushStats>;
|
|
149
|
+
/**
|
|
150
|
+
* Lista todos os triggers configurados.
|
|
151
|
+
*/
|
|
152
|
+
listTriggers(): Promise<PushTrigger[]>;
|
|
153
|
+
/**
|
|
154
|
+
* Obtém um trigger específico.
|
|
155
|
+
*/
|
|
156
|
+
getTrigger(triggerId: string): Promise<PushTrigger>;
|
|
157
|
+
/**
|
|
158
|
+
* Cria um novo trigger.
|
|
159
|
+
*/
|
|
160
|
+
createTrigger(params: CreatePushTriggerParams): Promise<PushTrigger>;
|
|
161
|
+
/**
|
|
162
|
+
* Atualiza um trigger.
|
|
163
|
+
*/
|
|
164
|
+
updateTrigger(triggerId: string, params: Partial<CreatePushTriggerParams>): Promise<PushTrigger>;
|
|
165
|
+
/**
|
|
166
|
+
* Remove um trigger.
|
|
167
|
+
*/
|
|
168
|
+
deleteTrigger(triggerId: string): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Ativa ou desativa um trigger.
|
|
171
|
+
*/
|
|
172
|
+
toggleTrigger(triggerId: string, enabled: boolean): Promise<PushTrigger>;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/modules/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// @aether/core - Push Module
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Módulo de push notifications (FCM e Web Push).
|
|
5
|
+
// =============================================================================
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// PUSH MODULE
|
|
8
|
+
// =============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Módulo de push notifications do Aether.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Registrar dispositivo
|
|
15
|
+
* await aether.push.registerDevice({
|
|
16
|
+
* token: 'fcm-token',
|
|
17
|
+
* platform: 'android',
|
|
18
|
+
* environment: 'prod'
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Enviar para usuário
|
|
22
|
+
* await aether.push.sendToUser({
|
|
23
|
+
* userId: 'user-id',
|
|
24
|
+
* title: 'Olá!',
|
|
25
|
+
* body: 'Nova mensagem'
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class PushModule {
|
|
30
|
+
client;
|
|
31
|
+
http;
|
|
32
|
+
constructor(client, http) {
|
|
33
|
+
this.client = client;
|
|
34
|
+
this.http = http;
|
|
35
|
+
}
|
|
36
|
+
// ===========================================================================
|
|
37
|
+
// VAPID KEY (Web Push)
|
|
38
|
+
// ===========================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Obtém a chave pública VAPID para Web Push.
|
|
41
|
+
*/
|
|
42
|
+
async getVapidKey() {
|
|
43
|
+
const projectId = this.client.projectId;
|
|
44
|
+
const { data } = await this.http.get(`/projects/${projectId}/push/vapid-key`);
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
// ===========================================================================
|
|
48
|
+
// REGISTRO DE DISPOSITIVO
|
|
49
|
+
// ===========================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Registra um dispositivo para receber push notifications.
|
|
52
|
+
*/
|
|
53
|
+
async registerDevice(params) {
|
|
54
|
+
const projectId = this.client.projectId;
|
|
55
|
+
const { data } = await this.http.post(`/projects/${projectId}/push/devices`, {
|
|
56
|
+
...params,
|
|
57
|
+
environment: params.environment ?? 'prod',
|
|
58
|
+
});
|
|
59
|
+
return data.data;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Remove registro de dispositivo.
|
|
63
|
+
*/
|
|
64
|
+
async unregisterDevice(deviceId) {
|
|
65
|
+
const projectId = this.client.projectId;
|
|
66
|
+
await this.http.delete(`/projects/${projectId}/push/devices/${deviceId}`);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Lista dispositivos do usuário atual.
|
|
70
|
+
*/
|
|
71
|
+
async listDevices() {
|
|
72
|
+
const projectId = this.client.projectId;
|
|
73
|
+
const { data } = await this.http.get(`/projects/${projectId}/push/devices`);
|
|
74
|
+
return data.data;
|
|
75
|
+
}
|
|
76
|
+
// ===========================================================================
|
|
77
|
+
// ENVIO DE NOTIFICAÇÕES
|
|
78
|
+
// ===========================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Envia notificação para um usuário específico.
|
|
81
|
+
*/
|
|
82
|
+
async sendToUser(params) {
|
|
83
|
+
const projectId = this.client.projectId;
|
|
84
|
+
const { data } = await this.http.post(`/projects/${projectId}/push/send`, {
|
|
85
|
+
userId: params.userId,
|
|
86
|
+
title: params.title,
|
|
87
|
+
body: params.body,
|
|
88
|
+
data: params.data ?? {},
|
|
89
|
+
environment: params.environment ?? 'prod',
|
|
90
|
+
});
|
|
91
|
+
return data;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Envia notificação para múltiplos usuários.
|
|
95
|
+
*/
|
|
96
|
+
async sendToMany(params) {
|
|
97
|
+
const projectId = this.client.projectId;
|
|
98
|
+
const { data } = await this.http.post(`/projects/${projectId}/push/send-batch`, {
|
|
99
|
+
userIds: params.userIds,
|
|
100
|
+
title: params.title,
|
|
101
|
+
body: params.body,
|
|
102
|
+
data: params.data ?? {},
|
|
103
|
+
environment: params.environment ?? 'prod',
|
|
104
|
+
});
|
|
105
|
+
return data;
|
|
106
|
+
}
|
|
107
|
+
// ===========================================================================
|
|
108
|
+
// LOGS E ESTATÍSTICAS
|
|
109
|
+
// ===========================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Lista logs de push notifications.
|
|
112
|
+
*/
|
|
113
|
+
async listLogs(options = {}) {
|
|
114
|
+
const projectId = this.client.projectId;
|
|
115
|
+
const { data } = await this.http.get(`/projects/${projectId}/push/logs`, {
|
|
116
|
+
params: {
|
|
117
|
+
limit: options.limit,
|
|
118
|
+
offset: options.offset,
|
|
119
|
+
status: options.status,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
return data.data;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Obtém estatísticas de push.
|
|
126
|
+
*/
|
|
127
|
+
async getStats() {
|
|
128
|
+
const projectId = this.client.projectId;
|
|
129
|
+
const { data } = await this.http.get(`/projects/${projectId}/push/stats`);
|
|
130
|
+
return data;
|
|
131
|
+
}
|
|
132
|
+
// ===========================================================================
|
|
133
|
+
// TRIGGERS
|
|
134
|
+
// ===========================================================================
|
|
135
|
+
/**
|
|
136
|
+
* Lista todos os triggers configurados.
|
|
137
|
+
*/
|
|
138
|
+
async listTriggers() {
|
|
139
|
+
const projectId = this.client.projectId;
|
|
140
|
+
const { data } = await this.http.get(`/projects/${projectId}/push/triggers`);
|
|
141
|
+
return data.data;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Obtém um trigger específico.
|
|
145
|
+
*/
|
|
146
|
+
async getTrigger(triggerId) {
|
|
147
|
+
const projectId = this.client.projectId;
|
|
148
|
+
const { data } = await this.http.get(`/projects/${projectId}/push/triggers/${triggerId}`);
|
|
149
|
+
return data.data;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Cria um novo trigger.
|
|
153
|
+
*/
|
|
154
|
+
async createTrigger(params) {
|
|
155
|
+
const projectId = this.client.projectId;
|
|
156
|
+
const { data } = await this.http.post(`/projects/${projectId}/push/triggers`, params);
|
|
157
|
+
return data.data;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Atualiza um trigger.
|
|
161
|
+
*/
|
|
162
|
+
async updateTrigger(triggerId, params) {
|
|
163
|
+
const projectId = this.client.projectId;
|
|
164
|
+
const { data } = await this.http.put(`/projects/${projectId}/push/triggers/${triggerId}`, params);
|
|
165
|
+
return data.data;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Remove um trigger.
|
|
169
|
+
*/
|
|
170
|
+
async deleteTrigger(triggerId) {
|
|
171
|
+
const projectId = this.client.projectId;
|
|
172
|
+
await this.http.delete(`/projects/${projectId}/push/triggers/${triggerId}`);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Ativa ou desativa um trigger.
|
|
176
|
+
*/
|
|
177
|
+
async toggleTrigger(triggerId, enabled) {
|
|
178
|
+
return this.updateTrigger(triggerId, { enabled });
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/modules/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
import type { PlataformaClient } from '../client/index.js';
|
|
3
|
+
import type { FileObject, UploadProgress, ListFilesOptions } from '../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Módulo de storage do Aether.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Upload
|
|
10
|
+
* const { data } = await aether.storage.upload(file, 'avatar.png', 'image/png');
|
|
11
|
+
* console.log(data.downloadUrl);
|
|
12
|
+
*
|
|
13
|
+
* // Listar
|
|
14
|
+
* const files = await aether.storage.list('folder');
|
|
15
|
+
*
|
|
16
|
+
* // Deletar
|
|
17
|
+
* await aether.storage.delete('file-id');
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare class StorageModule {
|
|
21
|
+
private client;
|
|
22
|
+
private http;
|
|
23
|
+
constructor(client: PlataformaClient, http: AxiosInstance);
|
|
24
|
+
/**
|
|
25
|
+
* Faz upload de um arquivo.
|
|
26
|
+
*
|
|
27
|
+
* @param file Arquivo a ser enviado (File, Blob ou Buffer)
|
|
28
|
+
* @param fileName Nome do arquivo (com extensão)
|
|
29
|
+
* @param contentType MIME type do arquivo (ex: 'image/png')
|
|
30
|
+
* @param folder Pasta de destino (opcional)
|
|
31
|
+
* @param onProgress Callback de progresso (opcional)
|
|
32
|
+
*/
|
|
33
|
+
upload(file: File | Blob | Buffer, fileName: string, contentType?: string, folder?: string, onProgress?: (progress: UploadProgress) => void): Promise<{
|
|
34
|
+
data: FileObject;
|
|
35
|
+
error: null;
|
|
36
|
+
} | {
|
|
37
|
+
data: null;
|
|
38
|
+
error: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Lista arquivos de uma pasta.
|
|
42
|
+
*/
|
|
43
|
+
list(folder?: string, options?: ListFilesOptions): Promise<FileObject[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Busca um arquivo por ID.
|
|
46
|
+
*/
|
|
47
|
+
get(fileId: string): Promise<FileObject>;
|
|
48
|
+
/**
|
|
49
|
+
* Deleta um arquivo.
|
|
50
|
+
*/
|
|
51
|
+
delete(fileId: string): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Gera URL assinada temporária para download.
|
|
54
|
+
*/
|
|
55
|
+
getSignedUrl(fileId: string, expiresIn?: number): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Retorna URL pública do arquivo (se bucket for público).
|
|
58
|
+
*/
|
|
59
|
+
getPublicUrl(fileId: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Move arquivo para outra pasta.
|
|
62
|
+
*/
|
|
63
|
+
move(fileId: string, newFolder: string): Promise<FileObject>;
|
|
64
|
+
/**
|
|
65
|
+
* Renomeia arquivo.
|
|
66
|
+
*/
|
|
67
|
+
rename(fileId: string, newName: string): Promise<FileObject>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/modules/storage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMtF;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,IAAI,CAAgB;gBAEhB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa;IAKzD;;;;;;;;OAQG;IACG,MAAM,CACV,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,GAC9C,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAyD7E;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgB9E;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAU9C;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO9C;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKpC;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAWlE;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAUnE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// @aether/core - Storage Module
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Módulo de storage para upload/download de arquivos.
|
|
5
|
+
// =============================================================================
|
|
6
|
+
import axios from 'axios';
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// STORAGE MODULE
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Módulo de storage do Aether.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Upload
|
|
16
|
+
* const { data } = await aether.storage.upload(file, 'avatar.png', 'image/png');
|
|
17
|
+
* console.log(data.downloadUrl);
|
|
18
|
+
*
|
|
19
|
+
* // Listar
|
|
20
|
+
* const files = await aether.storage.list('folder');
|
|
21
|
+
*
|
|
22
|
+
* // Deletar
|
|
23
|
+
* await aether.storage.delete('file-id');
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export class StorageModule {
|
|
27
|
+
client;
|
|
28
|
+
http;
|
|
29
|
+
constructor(client, http) {
|
|
30
|
+
this.client = client;
|
|
31
|
+
this.http = http;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Faz upload de um arquivo.
|
|
35
|
+
*
|
|
36
|
+
* @param file Arquivo a ser enviado (File, Blob ou Buffer)
|
|
37
|
+
* @param fileName Nome do arquivo (com extensão)
|
|
38
|
+
* @param contentType MIME type do arquivo (ex: 'image/png')
|
|
39
|
+
* @param folder Pasta de destino (opcional)
|
|
40
|
+
* @param onProgress Callback de progresso (opcional)
|
|
41
|
+
*/
|
|
42
|
+
async upload(file, fileName, contentType, folder, onProgress) {
|
|
43
|
+
const projectId = this.client.projectId;
|
|
44
|
+
try {
|
|
45
|
+
// Primeiro obtém URL assinada para upload
|
|
46
|
+
const { data: uploadData } = await this.http.post(`/projects/${projectId}/storage/upload-url`, {
|
|
47
|
+
fileName,
|
|
48
|
+
contentType: contentType || 'application/octet-stream',
|
|
49
|
+
folder,
|
|
50
|
+
});
|
|
51
|
+
// Prepara o arquivo
|
|
52
|
+
let blob;
|
|
53
|
+
if (Buffer.isBuffer(file)) {
|
|
54
|
+
blob = new Blob([new Uint8Array(file)], { type: contentType });
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
blob = file;
|
|
58
|
+
}
|
|
59
|
+
// Faz upload direto para S3/storage
|
|
60
|
+
await axios.put(uploadData.uploadUrl, blob, {
|
|
61
|
+
headers: {
|
|
62
|
+
'Content-Type': contentType || 'application/octet-stream',
|
|
63
|
+
},
|
|
64
|
+
onUploadProgress: (event) => {
|
|
65
|
+
if (onProgress && event.total) {
|
|
66
|
+
onProgress({
|
|
67
|
+
loaded: event.loaded,
|
|
68
|
+
total: event.total,
|
|
69
|
+
percent: Math.round((event.loaded / event.total) * 100),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
// Confirma upload
|
|
75
|
+
const { data: fileData } = await this.http.post(`/projects/${projectId}/storage/confirm`, {
|
|
76
|
+
fileId: uploadData.fileId,
|
|
77
|
+
});
|
|
78
|
+
return { data: fileData.data, error: null };
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const error = err;
|
|
82
|
+
return {
|
|
83
|
+
data: null,
|
|
84
|
+
error: error.response?.data?.message || error.message || 'Erro no upload'
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Lista arquivos de uma pasta.
|
|
90
|
+
*/
|
|
91
|
+
async list(folder, options) {
|
|
92
|
+
const projectId = this.client.projectId;
|
|
93
|
+
const params = {};
|
|
94
|
+
if (folder)
|
|
95
|
+
params.folder = folder;
|
|
96
|
+
if (options?.limit)
|
|
97
|
+
params.limit = options.limit;
|
|
98
|
+
if (options?.offset)
|
|
99
|
+
params.offset = options.offset;
|
|
100
|
+
const { data } = await this.http.get(`/projects/${projectId}/storage`, { params });
|
|
101
|
+
return data.data;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Busca um arquivo por ID.
|
|
105
|
+
*/
|
|
106
|
+
async get(fileId) {
|
|
107
|
+
const projectId = this.client.projectId;
|
|
108
|
+
const { data } = await this.http.get(`/projects/${projectId}/storage/${fileId}`);
|
|
109
|
+
return data.data;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Deleta um arquivo.
|
|
113
|
+
*/
|
|
114
|
+
async delete(fileId) {
|
|
115
|
+
const projectId = this.client.projectId;
|
|
116
|
+
await this.http.delete(`/projects/${projectId}/storage/${fileId}`);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Gera URL assinada temporária para download.
|
|
121
|
+
*/
|
|
122
|
+
async getSignedUrl(fileId, expiresIn = 3600) {
|
|
123
|
+
const projectId = this.client.projectId;
|
|
124
|
+
const { data } = await this.http.post(`/projects/${projectId}/storage/${fileId}/signed-url`, { expiresIn });
|
|
125
|
+
return data.url;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Retorna URL pública do arquivo (se bucket for público).
|
|
129
|
+
*/
|
|
130
|
+
getPublicUrl(fileId) {
|
|
131
|
+
const projectId = this.client.projectId;
|
|
132
|
+
return `${this.client.apiUrl}/v1/projects/${projectId}/storage/public/${fileId}`;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Move arquivo para outra pasta.
|
|
136
|
+
*/
|
|
137
|
+
async move(fileId, newFolder) {
|
|
138
|
+
const projectId = this.client.projectId;
|
|
139
|
+
const { data } = await this.http.put(`/projects/${projectId}/storage/${fileId}/move`, { folder: newFolder });
|
|
140
|
+
return data.data;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Renomeia arquivo.
|
|
144
|
+
*/
|
|
145
|
+
async rename(fileId, newName) {
|
|
146
|
+
const projectId = this.client.projectId;
|
|
147
|
+
const { data } = await this.http.put(`/projects/${projectId}/storage/${fileId}`, { name: newName });
|
|
148
|
+
return data.data;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/modules/storage.ts"],"names":[],"mappings":"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"}
|