s3-client-dtb 0.0.1 → 1.0.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.
- package/README.md +532 -148
- package/dist/client/index.d.ts +74 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +125 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/local-storage-client.d.ts +97 -0
- package/dist/client/local-storage-client.d.ts.map +1 -0
- package/dist/client/local-storage-client.js +108 -0
- package/dist/client/local-storage-client.js.map +1 -0
- package/dist/client/storage-client.d.ts +28 -3
- package/dist/client/storage-client.d.ts.map +1 -1
- package/dist/client/storage-client.js +270 -27
- package/dist/client/storage-client.js.map +1 -1
- package/dist/config/config-reader.d.ts +67 -0
- package/dist/config/config-reader.d.ts.map +1 -0
- package/dist/config/config-reader.js +201 -0
- package/dist/config/config-reader.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -4
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +11 -6
|
@@ -1,44 +1,148 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.StorageClient = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const otplib_1 = require("otplib");
|
|
8
7
|
const storage_errors_1 = require("../errors/storage-errors");
|
|
9
8
|
class StorageClient {
|
|
10
9
|
baseUrl;
|
|
11
|
-
apiKey;
|
|
12
10
|
timeout;
|
|
13
11
|
apiPrefix = '/apifiles';
|
|
12
|
+
clientConfig;
|
|
13
|
+
clientSecret;
|
|
14
|
+
totpSecret;
|
|
15
|
+
totpPeriodSec;
|
|
16
|
+
totpPeriodMs;
|
|
17
|
+
tokenCache = null;
|
|
14
18
|
constructor(options) {
|
|
15
|
-
// Normalizar URL base (eliminar trailing slash)
|
|
16
19
|
this.baseUrl = options.baseUrl.replace(/\/+$/, '');
|
|
17
|
-
this.apiKey = options.apiKey;
|
|
18
20
|
this.timeout = options.timeout ?? 30000;
|
|
21
|
+
this.clientConfig = options.clientConfig;
|
|
22
|
+
this.clientSecret = options.clientSecret;
|
|
23
|
+
this.totpSecret = options.totpSecret;
|
|
24
|
+
this.totpPeriodSec = options.totpPeriodSeconds ?? 30;
|
|
25
|
+
this.totpPeriodMs = this.totpPeriodSec * 1000;
|
|
19
26
|
if (!this.baseUrl) {
|
|
20
27
|
throw new Error('baseUrl es requerido');
|
|
21
28
|
}
|
|
22
|
-
if (!this.
|
|
23
|
-
throw new Error('
|
|
29
|
+
if (!this.clientConfig) {
|
|
30
|
+
throw new Error('clientConfig es requerido');
|
|
24
31
|
}
|
|
32
|
+
if (!this.clientSecret) {
|
|
33
|
+
throw new Error('clientSecret es requerido');
|
|
34
|
+
}
|
|
35
|
+
if (!this.totpSecret) {
|
|
36
|
+
throw new Error('totpSecret es requerido');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Genera un token JWT firmado con HMAC usando CLIENT_SECRET + código TOTP actual.
|
|
41
|
+
* Genera un nuevo token cuando el TOTP cambia (cada totpPeriodSeconds).
|
|
42
|
+
*/
|
|
43
|
+
async generateToken() {
|
|
44
|
+
const currentTotpPeriod = Math.floor(Date.now() / this.totpPeriodMs);
|
|
45
|
+
if (this.tokenCache && this.tokenCache.expiresAt > Date.now()) {
|
|
46
|
+
const periodDiff = Math.abs(currentTotpPeriod - this.tokenCache.totpPeriod);
|
|
47
|
+
if (periodDiff <= 1) {
|
|
48
|
+
return this.tokenCache.token;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
let totpSecret = this.totpSecret;
|
|
52
|
+
const cleanSecret = totpSecret.replace(/\s/g, '').toUpperCase();
|
|
53
|
+
if (!/^[A-Z2-7]+=*$/.test(cleanSecret)) {
|
|
54
|
+
const hash = (0, crypto_1.createHash)('sha256').update(this.totpSecret).digest();
|
|
55
|
+
const base32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
56
|
+
const truncated = hash.slice(0, 20);
|
|
57
|
+
let binary = '';
|
|
58
|
+
for (let i = 0; i < truncated.length; i++) {
|
|
59
|
+
binary += truncated[i].toString(2).padStart(8, '0');
|
|
60
|
+
}
|
|
61
|
+
while (binary.length % 5 !== 0) {
|
|
62
|
+
binary += '0';
|
|
63
|
+
}
|
|
64
|
+
let base32 = '';
|
|
65
|
+
for (let i = 0; i < binary.length; i += 5) {
|
|
66
|
+
const chunk = binary.substr(i, 5);
|
|
67
|
+
base32 += base32Chars[parseInt(chunk, 2)];
|
|
68
|
+
}
|
|
69
|
+
totpSecret = base32;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
totpSecret = cleanSecret;
|
|
73
|
+
}
|
|
74
|
+
const totpCode = await (0, otplib_1.generate)({ secret: totpSecret, period: this.totpPeriodSec });
|
|
75
|
+
// Crear payload del token
|
|
76
|
+
const payload = {
|
|
77
|
+
clientId: this.clientConfig.clientId,
|
|
78
|
+
permissions: this.clientConfig.permissions,
|
|
79
|
+
allowedPaths: this.clientConfig.allowedPaths,
|
|
80
|
+
};
|
|
81
|
+
// Calcular tiempo de expiración (por defecto 5 minutos)
|
|
82
|
+
const expiresIn = this.clientConfig.tokenExpiresIn || '5m';
|
|
83
|
+
const expiresInSeconds = this.parseExpiresIn(expiresIn);
|
|
84
|
+
// Firmar el token usando CLIENT_SECRET + TOTP como secreto
|
|
85
|
+
const secret = this.clientSecret + totpCode;
|
|
86
|
+
const token = (0, jsonwebtoken_1.sign)(payload, secret, {
|
|
87
|
+
expiresIn: expiresInSeconds,
|
|
88
|
+
});
|
|
89
|
+
this.tokenCache = {
|
|
90
|
+
token,
|
|
91
|
+
expiresAt: Date.now() + expiresInSeconds * 1000,
|
|
92
|
+
totpPeriod: currentTotpPeriod,
|
|
93
|
+
};
|
|
94
|
+
return token;
|
|
25
95
|
}
|
|
26
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Convierte expiresIn string (ej: "30m", "7d") a segundos
|
|
98
|
+
*/
|
|
99
|
+
parseExpiresIn(expiresIn) {
|
|
100
|
+
const match = expiresIn.match(/^(\d+)([smhd])$/);
|
|
101
|
+
if (!match) {
|
|
102
|
+
return 300; // Default 5 minutos
|
|
103
|
+
}
|
|
104
|
+
const value = parseInt(match[1], 10);
|
|
105
|
+
const unit = match[2];
|
|
106
|
+
switch (unit) {
|
|
107
|
+
case 's':
|
|
108
|
+
return value;
|
|
109
|
+
case 'm':
|
|
110
|
+
return value * 60;
|
|
111
|
+
case 'h':
|
|
112
|
+
return value * 3600;
|
|
113
|
+
case 'd':
|
|
114
|
+
return value * 86400;
|
|
115
|
+
default:
|
|
116
|
+
return 300;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async getHeaders(additionalHeaders) {
|
|
120
|
+
const token = await this.generateToken();
|
|
27
121
|
return {
|
|
28
|
-
'Authorization': `Bearer ${
|
|
29
|
-
'x-api-key': this.apiKey,
|
|
122
|
+
'Authorization': `Bearer ${token}`,
|
|
30
123
|
...additionalHeaders,
|
|
31
124
|
};
|
|
32
125
|
}
|
|
33
126
|
async request(method, endpoint, options = {}) {
|
|
34
127
|
const url = `${this.baseUrl}${this.apiPrefix}${endpoint}`;
|
|
35
|
-
const headers = this.getHeaders(options.headers);
|
|
128
|
+
const headers = await this.getHeaders(options.headers);
|
|
36
129
|
const controller = new AbortController();
|
|
37
130
|
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
38
131
|
try {
|
|
132
|
+
// Para FormData nativo, fetch establece automáticamente Content-Type con boundary
|
|
133
|
+
// Solo necesitamos pasar los headers de autenticación
|
|
134
|
+
let finalHeaders;
|
|
135
|
+
if (options.body instanceof FormData) {
|
|
136
|
+
// Para FormData nativo, solo incluir headers de autenticación
|
|
137
|
+
// fetch manejará automáticamente Content-Type
|
|
138
|
+
finalHeaders = options.headers || {};
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
finalHeaders = headers;
|
|
142
|
+
}
|
|
39
143
|
const response = await fetch(url, {
|
|
40
144
|
method,
|
|
41
|
-
headers:
|
|
145
|
+
headers: finalHeaders,
|
|
42
146
|
body: options.body,
|
|
43
147
|
signal: controller.signal,
|
|
44
148
|
});
|
|
@@ -49,6 +153,43 @@ class StorageClient {
|
|
|
49
153
|
}
|
|
50
154
|
return response.body;
|
|
51
155
|
}
|
|
156
|
+
// Si la respuesta no es OK, intentar parsear el error
|
|
157
|
+
if (!response.ok) {
|
|
158
|
+
let errorData;
|
|
159
|
+
try {
|
|
160
|
+
errorData = await response.json();
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
throw new storage_errors_1.StorageError(`Error del servidor: ${response.status} ${response.statusText}`, 'HTTP_ERROR');
|
|
164
|
+
}
|
|
165
|
+
// Manejar errores de NestJS (pueden venir en formato diferente)
|
|
166
|
+
if (errorData.error || errorData.message) {
|
|
167
|
+
const errorMessage = errorData.error?.message || errorData.message || 'Error desconocido';
|
|
168
|
+
const errorCode = errorData.error?.code || errorData.statusCode || 'UNKNOWN_ERROR';
|
|
169
|
+
// Mapear códigos de error del backend a errores del cliente
|
|
170
|
+
switch (errorCode) {
|
|
171
|
+
case 'FILE_NOT_FOUND':
|
|
172
|
+
case 404:
|
|
173
|
+
throw new storage_errors_1.FileNotFoundError(errorMessage);
|
|
174
|
+
case 'INVALID_MIME_TYPE':
|
|
175
|
+
throw new storage_errors_1.InvalidMimeTypeError(errorMessage);
|
|
176
|
+
case 'FILE_TOO_LARGE':
|
|
177
|
+
throw new storage_errors_1.FileTooLargeError(errorMessage);
|
|
178
|
+
case 'UPLOAD_ERROR':
|
|
179
|
+
throw new storage_errors_1.UploadError(errorMessage);
|
|
180
|
+
case 'DOWNLOAD_ERROR':
|
|
181
|
+
throw new storage_errors_1.DownloadError(errorMessage);
|
|
182
|
+
case 'DELETE_ERROR':
|
|
183
|
+
throw new storage_errors_1.DeleteError(errorMessage);
|
|
184
|
+
case 'METADATA_ERROR':
|
|
185
|
+
throw new storage_errors_1.MetadataError(errorMessage);
|
|
186
|
+
case 'LIST_ERROR':
|
|
187
|
+
throw new storage_errors_1.ListError(errorMessage);
|
|
188
|
+
default:
|
|
189
|
+
throw new storage_errors_1.StorageError(errorMessage, String(errorCode));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
52
193
|
const data = (await response.json());
|
|
53
194
|
if (!data.success) {
|
|
54
195
|
const error = data.error;
|
|
@@ -74,11 +215,45 @@ class StorageClient {
|
|
|
74
215
|
case 'LIST_ERROR':
|
|
75
216
|
throw new storage_errors_1.ListError(error.message);
|
|
76
217
|
default:
|
|
77
|
-
throw new storage_errors_1.StorageError(error.message, error.code);
|
|
218
|
+
throw new storage_errors_1.StorageError(error.message || 'Error desconocido', error.code);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Si recibimos 401, invalidar caché de token y regenerar
|
|
222
|
+
if (response.status === 401) {
|
|
223
|
+
this.tokenCache = null; // Invalidar caché
|
|
224
|
+
const retryHeaders = await this.getHeaders(options.headers);
|
|
225
|
+
const retryResponse = await fetch(url, {
|
|
226
|
+
method,
|
|
227
|
+
headers: options.body instanceof FormData ? {} : retryHeaders,
|
|
228
|
+
body: options.body,
|
|
229
|
+
signal: controller.signal,
|
|
230
|
+
});
|
|
231
|
+
if (retryResponse.status === 401 || retryResponse.status === 403) {
|
|
232
|
+
throw new storage_errors_1.StorageError('No autorizado. Verifica tus credenciales y configuración.', 'UNAUTHORIZED');
|
|
233
|
+
}
|
|
234
|
+
// Procesar respuesta del reintento
|
|
235
|
+
const responseType = options.responseType;
|
|
236
|
+
if (responseType === 'stream') {
|
|
237
|
+
if (!retryResponse.body) {
|
|
238
|
+
throw new storage_errors_1.DownloadError('No se recibió contenido del servidor');
|
|
239
|
+
}
|
|
240
|
+
return retryResponse.body;
|
|
241
|
+
}
|
|
242
|
+
const retryData = (await retryResponse.json());
|
|
243
|
+
if (!retryData.success) {
|
|
244
|
+
const error = retryData.error;
|
|
245
|
+
if (!error) {
|
|
246
|
+
throw new storage_errors_1.StorageError('Error desconocido del servidor', 'UNKNOWN_ERROR');
|
|
247
|
+
}
|
|
248
|
+
throw new storage_errors_1.StorageError(error.message, error.code);
|
|
249
|
+
}
|
|
250
|
+
if (!retryData.data) {
|
|
251
|
+
throw new storage_errors_1.StorageError('Respuesta sin datos del servidor', 'NO_DATA');
|
|
78
252
|
}
|
|
253
|
+
return retryData.data;
|
|
79
254
|
}
|
|
80
|
-
if (response.status ===
|
|
81
|
-
throw new storage_errors_1.StorageError('No autorizado. Verifica
|
|
255
|
+
if (response.status === 403) {
|
|
256
|
+
throw new storage_errors_1.StorageError('No autorizado. Verifica tus permisos', 'FORBIDDEN');
|
|
82
257
|
}
|
|
83
258
|
if (!data.data) {
|
|
84
259
|
throw new storage_errors_1.StorageError('Respuesta sin datos del servidor', 'NO_DATA');
|
|
@@ -101,18 +276,21 @@ class StorageClient {
|
|
|
101
276
|
}
|
|
102
277
|
async uploadFile(filePath, buffer, mimeType, prefix) {
|
|
103
278
|
try {
|
|
104
|
-
|
|
105
|
-
formData
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
});
|
|
279
|
+
// Usar FormData nativo de Node.js (disponible desde Node 18+)
|
|
280
|
+
const formData = new FormData();
|
|
281
|
+
const filename = prefix ? `${prefix}@${Date.now()}` : `file-${Date.now()}`;
|
|
282
|
+
// Convertir Buffer a Uint8Array para Blob
|
|
283
|
+
const blob = new Blob([new Uint8Array(buffer)], { type: mimeType });
|
|
284
|
+
formData.append('file', blob, filename);
|
|
109
285
|
formData.append('filePath', filePath);
|
|
110
|
-
|
|
111
|
-
headers
|
|
112
|
-
|
|
286
|
+
// Para FormData nativo, fetch establece automáticamente Content-Type con boundary
|
|
287
|
+
// Solo necesitamos pasar los headers de autenticación
|
|
288
|
+
const authHeaders = {};
|
|
289
|
+
const token = await this.generateToken();
|
|
290
|
+
authHeaders['Authorization'] = `Bearer ${token}`;
|
|
113
291
|
const result = await this.request('POST', '/files', {
|
|
114
292
|
body: formData,
|
|
115
|
-
headers,
|
|
293
|
+
headers: authHeaders,
|
|
116
294
|
});
|
|
117
295
|
return result.path;
|
|
118
296
|
}
|
|
@@ -153,9 +331,12 @@ class StorageClient {
|
|
|
153
331
|
}
|
|
154
332
|
async getFileMetadata(path) {
|
|
155
333
|
try {
|
|
334
|
+
const token = await this.generateToken();
|
|
156
335
|
const response = await fetch(`${this.baseUrl}${this.apiPrefix}/files/${path}`, {
|
|
157
336
|
method: 'HEAD',
|
|
158
|
-
headers:
|
|
337
|
+
headers: {
|
|
338
|
+
'Authorization': `Bearer ${token}`,
|
|
339
|
+
},
|
|
159
340
|
});
|
|
160
341
|
if (response.status === 404) {
|
|
161
342
|
throw new storage_errors_1.FileNotFoundError();
|
|
@@ -232,6 +413,68 @@ class StorageClient {
|
|
|
232
413
|
throw error;
|
|
233
414
|
}
|
|
234
415
|
}
|
|
416
|
+
/**
|
|
417
|
+
* Verifica que el cliente puede generar el código TOTP correcto
|
|
418
|
+
* (opcional, para validar configuración)
|
|
419
|
+
*/
|
|
420
|
+
async verifyTotp() {
|
|
421
|
+
// Convertir secret a Base32 si es necesario (mismo proceso que en generateToken)
|
|
422
|
+
let totpSecret = this.totpSecret;
|
|
423
|
+
const cleanSecret = totpSecret.replace(/\s/g, '').toUpperCase();
|
|
424
|
+
if (!/^[A-Z2-7]+=*$/.test(cleanSecret)) {
|
|
425
|
+
const hash = (0, crypto_1.createHash)('sha256').update(this.totpSecret).digest();
|
|
426
|
+
const base32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
427
|
+
const truncated = hash.slice(0, 20);
|
|
428
|
+
let binary = '';
|
|
429
|
+
for (let i = 0; i < truncated.length; i++) {
|
|
430
|
+
binary += truncated[i].toString(2).padStart(8, '0');
|
|
431
|
+
}
|
|
432
|
+
while (binary.length % 5 !== 0) {
|
|
433
|
+
binary += '0';
|
|
434
|
+
}
|
|
435
|
+
let base32 = '';
|
|
436
|
+
for (let i = 0; i < binary.length; i += 5) {
|
|
437
|
+
const chunk = binary.substr(i, 5);
|
|
438
|
+
base32 += base32Chars[parseInt(chunk, 2)];
|
|
439
|
+
}
|
|
440
|
+
totpSecret = base32;
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
totpSecret = cleanSecret;
|
|
444
|
+
}
|
|
445
|
+
const totpCode = await (0, otplib_1.generate)({ secret: totpSecret, period: this.totpPeriodSec });
|
|
446
|
+
const url = `${this.baseUrl}${this.apiPrefix}/auth/otp/verify`;
|
|
447
|
+
const controller = new AbortController();
|
|
448
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
449
|
+
try {
|
|
450
|
+
const response = await fetch(url, {
|
|
451
|
+
method: 'POST',
|
|
452
|
+
headers: {
|
|
453
|
+
'Content-Type': 'application/json',
|
|
454
|
+
},
|
|
455
|
+
body: JSON.stringify({
|
|
456
|
+
clientId: this.clientConfig.clientId,
|
|
457
|
+
otp: totpCode,
|
|
458
|
+
}),
|
|
459
|
+
signal: controller.signal,
|
|
460
|
+
});
|
|
461
|
+
clearTimeout(timeoutId);
|
|
462
|
+
const data = (await response.json());
|
|
463
|
+
if (!data.success || !data.data) {
|
|
464
|
+
const error = data.error;
|
|
465
|
+
throw new storage_errors_1.StorageError(error?.message ?? 'Error al verificar TOTP', error?.code ?? 'TOTP_VERIFY_ERROR');
|
|
466
|
+
}
|
|
467
|
+
return data.data;
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
clearTimeout(timeoutId);
|
|
471
|
+
if (error instanceof storage_errors_1.StorageError) {
|
|
472
|
+
throw error;
|
|
473
|
+
}
|
|
474
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
475
|
+
throw new storage_errors_1.StorageError(`Error al verificar TOTP: ${message}`, 'TOTP_VERIFY_ERROR');
|
|
476
|
+
}
|
|
477
|
+
}
|
|
235
478
|
}
|
|
236
479
|
exports.StorageClient = StorageClient;
|
|
237
480
|
//# sourceMappingURL=storage-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-client.js","sourceRoot":"","sources":["../../src/client/storage-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage-client.js","sourceRoot":"","sources":["../../src/client/storage-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ClientRateLimit } from '../types';
|
|
2
|
+
/** Modo de almacenamiento: online (servidor remoto) u offline (local) */
|
|
3
|
+
export type StorageMode = 'online' | 'offline';
|
|
4
|
+
export interface ClientConfig {
|
|
5
|
+
clientId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
permissions: ('read' | 'write' | 'delete')[];
|
|
8
|
+
allowedPaths: string[];
|
|
9
|
+
rateLimit?: ClientRateLimit;
|
|
10
|
+
tokenExpiresIn?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Configuración para modo online (servidor remoto) */
|
|
13
|
+
export interface ClientConfigFile {
|
|
14
|
+
mode: 'online';
|
|
15
|
+
clientId: string;
|
|
16
|
+
name: string;
|
|
17
|
+
baseUrl: string;
|
|
18
|
+
permissions: ('read' | 'write' | 'delete')[];
|
|
19
|
+
allowedPaths: string[];
|
|
20
|
+
rateLimit?: ClientRateLimit;
|
|
21
|
+
tokenExpiresIn?: string;
|
|
22
|
+
clientSecret: string;
|
|
23
|
+
totpSecret: string;
|
|
24
|
+
totpPeriod?: number;
|
|
25
|
+
}
|
|
26
|
+
/** Configuración para modo offline (almacenamiento local) */
|
|
27
|
+
export interface OfflineConfigFile {
|
|
28
|
+
mode: 'offline';
|
|
29
|
+
/** Directorio raíz donde se guardarán los archivos */
|
|
30
|
+
rootPath: string;
|
|
31
|
+
/** Tamaño máximo de archivo (ej: "50mb", "100kb"). Default: "50mb" */
|
|
32
|
+
maxFileSize?: string;
|
|
33
|
+
/** MIME types permitidos. Default: ["*"] (todos) */
|
|
34
|
+
allowedMimeTypes?: string[];
|
|
35
|
+
}
|
|
36
|
+
/** Configuración unificada que puede ser online u offline */
|
|
37
|
+
export type StorageConfigFile = ClientConfigFile | OfflineConfigFile;
|
|
38
|
+
/**
|
|
39
|
+
* Lee la configuración del modo offline desde variables de entorno
|
|
40
|
+
*/
|
|
41
|
+
export declare function readOfflineConfig(): OfflineConfigFile;
|
|
42
|
+
/**
|
|
43
|
+
* Lee la configuración del modo online desde variables de entorno
|
|
44
|
+
*/
|
|
45
|
+
export declare function readOnlineConfig(): ClientConfigFile;
|
|
46
|
+
/**
|
|
47
|
+
* Detecta el modo de almacenamiento desde STORAGE_MODE.
|
|
48
|
+
* Default: 'online' si no se especifica.
|
|
49
|
+
*/
|
|
50
|
+
export declare function getStorageMode(): StorageMode;
|
|
51
|
+
/**
|
|
52
|
+
* Lee la configuración del cliente desde variables de entorno.
|
|
53
|
+
* Detecta automáticamente el modo (online/offline) según STORAGE_MODE.
|
|
54
|
+
*
|
|
55
|
+
* @returns Configuración para modo online u offline
|
|
56
|
+
*/
|
|
57
|
+
export declare function readStorageConfig(): StorageConfigFile;
|
|
58
|
+
/**
|
|
59
|
+
* Lee la configuración del cliente desde variables de entorno (modo online)
|
|
60
|
+
* @deprecated Usa readStorageConfig() para soporte automático de modo online/offline
|
|
61
|
+
*/
|
|
62
|
+
export declare function readClientConfig(): ClientConfigFile;
|
|
63
|
+
/**
|
|
64
|
+
* Convierte ClientConfigFile a ClientConfig (sin baseUrl y tiempos)
|
|
65
|
+
*/
|
|
66
|
+
export declare function toClientConfig(config: ClientConfigFile): ClientConfig;
|
|
67
|
+
//# sourceMappingURL=config-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-reader.d.ts","sourceRoot":"","sources":["../../src/config/config-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AA6BrE;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CA2BrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAmGnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAY5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAQrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,YAAY,CASrE"}
|