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.
@@ -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 form_data_1 = __importDefault(require("form-data"));
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.apiKey) {
23
- throw new Error('apiKey es requerido');
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
- getHeaders(additionalHeaders) {
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 ${this.apiKey}`,
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: options.body instanceof form_data_1.default ? {} : 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 === 401 || response.status === 403) {
81
- throw new storage_errors_1.StorageError('No autorizado. Verifica tu API key y permisos', 'UNAUTHORIZED');
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
- const formData = new form_data_1.default();
105
- formData.append('file', buffer, {
106
- filename: prefix ? `${prefix}@${Date.now()}` : `file-${Date.now()}`,
107
- contentType: mimeType,
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
- const headers = formData.getHeaders();
111
- headers['Authorization'] = `Bearer ${this.apiKey}`;
112
- headers['x-api-key'] = this.apiKey;
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: this.getHeaders(),
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"}