@nubiia/mcp-freematica 0.6.1
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/LICENSE +21 -0
- package/README.md +485 -0
- package/dist/clients/base-client.d.ts +31 -0
- package/dist/clients/base-client.js +102 -0
- package/dist/clients/base-client.js.map +1 -0
- package/dist/clients/fiql-builder.d.ts +118 -0
- package/dist/clients/fiql-builder.js +257 -0
- package/dist/clients/fiql-builder.js.map +1 -0
- package/dist/clients/freematica-client.d.ts +659 -0
- package/dist/clients/freematica-client.js +1327 -0
- package/dist/clients/freematica-client.js.map +1 -0
- package/dist/clients/hardened-base-client.d.ts +143 -0
- package/dist/clients/hardened-base-client.js +366 -0
- package/dist/clients/hardened-base-client.js.map +1 -0
- package/dist/config.d.ts +104 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +71 -0
- package/dist/logger.js +114 -0
- package/dist/logger.js.map +1 -0
- package/dist/schemas/albaranes.d.ts +124 -0
- package/dist/schemas/albaranes.js +250 -0
- package/dist/schemas/albaranes.js.map +1 -0
- package/dist/schemas/cartera.d.ts +70 -0
- package/dist/schemas/cartera.js +104 -0
- package/dist/schemas/cartera.js.map +1 -0
- package/dist/schemas/contratos.d.ts +7 -0
- package/dist/schemas/contratos.js +2 -0
- package/dist/schemas/contratos.js.map +1 -0
- package/dist/schemas/facturas-electronicas.d.ts +60 -0
- package/dist/schemas/facturas-electronicas.js +79 -0
- package/dist/schemas/facturas-electronicas.js.map +1 -0
- package/dist/schemas/facturas-ventas.d.ts +118 -0
- package/dist/schemas/facturas-ventas.js +153 -0
- package/dist/schemas/facturas-ventas.js.map +1 -0
- package/dist/schemas/filters.d.ts +92 -0
- package/dist/schemas/filters.js +76 -0
- package/dist/schemas/filters.js.map +1 -0
- package/dist/schemas/master-data.d.ts +26 -0
- package/dist/schemas/master-data.js +86 -0
- package/dist/schemas/master-data.js.map +1 -0
- package/dist/schemas/pagination.d.ts +14 -0
- package/dist/schemas/pagination.js +27 -0
- package/dist/schemas/pagination.js.map +1 -0
- package/dist/schemas/pedidos-compras.d.ts +92 -0
- package/dist/schemas/pedidos-compras.js +189 -0
- package/dist/schemas/pedidos-compras.js.map +1 -0
- package/dist/server-instructions.d.ts +1 -0
- package/dist/server-instructions.js +83 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +41 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/albaranes.d.ts +16 -0
- package/dist/tools/albaranes.js +202 -0
- package/dist/tools/albaranes.js.map +1 -0
- package/dist/tools/calendarios.d.ts +13 -0
- package/dist/tools/calendarios.js +82 -0
- package/dist/tools/calendarios.js.map +1 -0
- package/dist/tools/cartera.d.ts +13 -0
- package/dist/tools/cartera.js +78 -0
- package/dist/tools/cartera.js.map +1 -0
- package/dist/tools/clientes.d.ts +3 -0
- package/dist/tools/clientes.js +48 -0
- package/dist/tools/clientes.js.map +1 -0
- package/dist/tools/contabilidad.d.ts +14 -0
- package/dist/tools/contabilidad.js +259 -0
- package/dist/tools/contabilidad.js.map +1 -0
- package/dist/tools/contactos-clientes.d.ts +3 -0
- package/dist/tools/contactos-clientes.js +25 -0
- package/dist/tools/contactos-clientes.js.map +1 -0
- package/dist/tools/contratos.d.ts +10 -0
- package/dist/tools/contratos.js +35 -0
- package/dist/tools/contratos.js.map +1 -0
- package/dist/tools/facturas-compras.d.ts +13 -0
- package/dist/tools/facturas-compras.js +131 -0
- package/dist/tools/facturas-compras.js.map +1 -0
- package/dist/tools/facturas-electronicas.d.ts +17 -0
- package/dist/tools/facturas-electronicas.js +268 -0
- package/dist/tools/facturas-electronicas.js.map +1 -0
- package/dist/tools/facturas-ventas.d.ts +16 -0
- package/dist/tools/facturas-ventas.js +181 -0
- package/dist/tools/facturas-ventas.js.map +1 -0
- package/dist/tools/helpers.d.ts +17 -0
- package/dist/tools/helpers.js +36 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/localizaciones.d.ts +17 -0
- package/dist/tools/localizaciones.js +192 -0
- package/dist/tools/localizaciones.js.map +1 -0
- package/dist/tools/master-data.d.ts +10 -0
- package/dist/tools/master-data.js +70 -0
- package/dist/tools/master-data.js.map +1 -0
- package/dist/tools/oportunidades-negocio.d.ts +3 -0
- package/dist/tools/oportunidades-negocio.js +68 -0
- package/dist/tools/oportunidades-negocio.js.map +1 -0
- package/dist/tools/pedidos-compras.d.ts +14 -0
- package/dist/tools/pedidos-compras.js +105 -0
- package/dist/tools/pedidos-compras.js.map +1 -0
- package/dist/tools/personal.d.ts +13 -0
- package/dist/tools/personal.js +154 -0
- package/dist/tools/personal.js.map +1 -0
- package/dist/tools/prl.d.ts +47 -0
- package/dist/tools/prl.js +242 -0
- package/dist/tools/prl.js.map +1 -0
- package/dist/tools/proveedores.d.ts +14 -0
- package/dist/tools/proveedores.js +122 -0
- package/dist/tools/proveedores.js.map +1 -0
- package/dist/transports/http.d.ts +12 -0
- package/dist/transports/http.js +110 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/stdio.d.ts +12 -0
- package/dist/transports/stdio.js +15 -0
- package/dist/transports/stdio.js.map +1 -0
- package/dist/types/api-envelope.d.ts +27 -0
- package/dist/types/api-envelope.js +2 -0
- package/dist/types/api-envelope.js.map +1 -0
- package/dist/types/clientes.d.ts +9 -0
- package/dist/types/clientes.js +2 -0
- package/dist/types/clientes.js.map +1 -0
- package/dist/types/contactos-clientes.d.ts +7 -0
- package/dist/types/contactos-clientes.js +2 -0
- package/dist/types/contactos-clientes.js.map +1 -0
- package/dist/types/contratos.d.ts +8 -0
- package/dist/types/contratos.js +2 -0
- package/dist/types/contratos.js.map +1 -0
- package/dist/types/master-data.d.ts +9 -0
- package/dist/types/master-data.js +2 -0
- package/dist/types/master-data.js.map +1 -0
- package/dist/types/oportunidades-negocio.d.ts +8 -0
- package/dist/types/oportunidades-negocio.js +2 -0
- package/dist/types/oportunidades-negocio.js.map +1 -0
- package/dist/utils/size-guardrail.d.ts +22 -0
- package/dist/utils/size-guardrail.js +31 -0
- package/dist/utils/size-guardrail.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freematica-client.js","sourceRoot":"","sources":["../../src/clients/freematica-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { BaseClient, type BaseClientConfig } from './base-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Estados posibles del circuit breaker.
|
|
4
|
+
*
|
|
5
|
+
* - `closed` → funcionamiento normal, las peticiones pasan.
|
|
6
|
+
* - `open` → cortocircuito activo, las peticiones fallan rápido sin tocar la red.
|
|
7
|
+
* - `half-open`→ período de prueba tras expirar el timeout; se deja pasar 1 petición.
|
|
8
|
+
*/
|
|
9
|
+
type CircuitState = 'closed' | 'open' | 'half-open';
|
|
10
|
+
/**
|
|
11
|
+
* Configuración extendida del cliente con hardening.
|
|
12
|
+
*
|
|
13
|
+
* Todos los campos son opcionales: se toman de variables de entorno si no se
|
|
14
|
+
* especifican, o de los valores por defecto documentados.
|
|
15
|
+
*/
|
|
16
|
+
export interface HardenedClientConfig extends BaseClientConfig {
|
|
17
|
+
/** Timeout por petición en ms. Default: `FREEMATICA_TIMEOUT_MS` || 30000. */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
/** Número máximo de reintentos para errores 5xx. Default: `FREEMATICA_MAX_RETRIES` || 3. */
|
|
20
|
+
maxRetries?: number;
|
|
21
|
+
/** Umbral de fallos consecutivos para abrir el circuit breaker. Default: `FREEMATICA_CIRCUIT_BREAKER_THRESHOLD` || 5. */
|
|
22
|
+
circuitBreakerThreshold?: number;
|
|
23
|
+
/** Tiempo en ms que el circuit breaker permanece abierto. Default: `FREEMATICA_CIRCUIT_BREAKER_TIMEOUT_MS` || 30000. */
|
|
24
|
+
circuitBreakerTimeoutMs?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Cliente base con hardening de producción.
|
|
28
|
+
*
|
|
29
|
+
* Extiende `BaseClient` añadiendo:
|
|
30
|
+
*
|
|
31
|
+
* - **Timeout configurable** vía `FREEMATICA_TIMEOUT_MS` (default 30s).
|
|
32
|
+
* Implementado con `AbortController` para poder cancelar peticiones que ya
|
|
33
|
+
* han comenzado.
|
|
34
|
+
*
|
|
35
|
+
* - **Retry con backoff exponencial** para errores 5xx y errores de red.
|
|
36
|
+
* Delays: 500ms, 1000ms, 2000ms + jitter aleatorio 0..200ms.
|
|
37
|
+
* Los errores 4xx nunca se reintentan.
|
|
38
|
+
* Configurable vía `FREEMATICA_MAX_RETRIES` (default 3).
|
|
39
|
+
*
|
|
40
|
+
* - **Circuit breaker** in-memory: tras `threshold` fallos consecutivos abre
|
|
41
|
+
* el circuito durante `timeoutMs` ms. Luego pasa a half-open.
|
|
42
|
+
* Configurable vía `FREEMATICA_CIRCUIT_BREAKER_THRESHOLD` (default 5) y
|
|
43
|
+
* `FREEMATICA_CIRCUIT_BREAKER_TIMEOUT_MS` (default 30000).
|
|
44
|
+
*
|
|
45
|
+
* **IMPORTANTE — Semántica de conteo del circuit breaker**: el breaker cuenta
|
|
46
|
+
* operaciones lógicas fallidas (post-retry-exhaustion), NO intentos HTTP
|
|
47
|
+
* individuales. Con threshold=5 y maxRetries=3, hacen falta hasta
|
|
48
|
+
* 5 × (3 + 1) = 20 fallos HTTP upstream para abrir el circuito.
|
|
49
|
+
* Los blips transitorios que se resuelven en el primer reintento NO cuentan.
|
|
50
|
+
* Ajusta `FREEMATICA_CIRCUIT_BREAKER_THRESHOLD` y `FREEMATICA_MAX_RETRIES`
|
|
51
|
+
* según la tolerancia a fallos de tu sistema.
|
|
52
|
+
*
|
|
53
|
+
* - **Logging estructurado con pino**: cada petición se loguea con
|
|
54
|
+
* `requestId`, `method`, `path`, `duration_ms`, `status`. Los headers
|
|
55
|
+
* x-auth-* NUNCA se loguean.
|
|
56
|
+
*
|
|
57
|
+
* ### Compatibilidad
|
|
58
|
+
*
|
|
59
|
+
* `HardenedBaseClient` es una extensión directa de `BaseClient`. `FreematicaClient`
|
|
60
|
+
* puede extenderlo en lugar de `BaseClient` sin cambios en su API pública.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* class FreematicaClient extends HardenedBaseClient {
|
|
64
|
+
* async listClientes() { return this.get('/clientes'); }
|
|
65
|
+
* }
|
|
66
|
+
*/
|
|
67
|
+
export declare class HardenedBaseClient extends BaseClient {
|
|
68
|
+
private readonly maxRetries;
|
|
69
|
+
private readonly circuitBreaker;
|
|
70
|
+
private readonly requestTimeoutMs;
|
|
71
|
+
constructor(config: HardenedClientConfig);
|
|
72
|
+
/**
|
|
73
|
+
* Calcula el delay de backoff para un intento dado.
|
|
74
|
+
*
|
|
75
|
+
* @param attempt - Número de intento (0-based).
|
|
76
|
+
* @returns Delay en ms con jitter aleatorio.
|
|
77
|
+
*/
|
|
78
|
+
private backoffDelay;
|
|
79
|
+
/**
|
|
80
|
+
* Determina si un error de Freemática debe reintentarse.
|
|
81
|
+
*
|
|
82
|
+
* Se reintentan:
|
|
83
|
+
* - `server_error` (5xx)
|
|
84
|
+
* - `network_error` (ECONNREFUSED, ETIMEDOUT, etc.)
|
|
85
|
+
* - `rate_limit_exceeded` (429): se reintenta honrando el header `Retry-After`
|
|
86
|
+
* cuando está disponible en `FreematicaError.retryAfter`. Si no hay valor,
|
|
87
|
+
* se usa el backoff exponencial estándar.
|
|
88
|
+
*
|
|
89
|
+
* Los errores 4xx restantes (`invalid_token`, `forbidden`, `not_found`)
|
|
90
|
+
* NO se reintentan ya que no son transitorios.
|
|
91
|
+
*
|
|
92
|
+
* @param err - Error a evaluar.
|
|
93
|
+
* @returns `true` si debe reintentarse.
|
|
94
|
+
*/
|
|
95
|
+
private isRetryable;
|
|
96
|
+
/**
|
|
97
|
+
* Calcula el delay de reintento para un error dado.
|
|
98
|
+
*
|
|
99
|
+
* Si el error es `rate_limit_exceeded` y tiene `retryAfter` definido y > 0,
|
|
100
|
+
* usa `retryAfter * 1000` ms en lugar del backoff exponencial. Esto honra
|
|
101
|
+
* el header `Retry-After` del servidor y evita martillear la API con
|
|
102
|
+
* backoffs arbitrarios.
|
|
103
|
+
*
|
|
104
|
+
* @param err - Error que causó el reintento.
|
|
105
|
+
* @param attempt - Número de intento (0-based, se pasa attempt-1 al llamador).
|
|
106
|
+
* @returns Delay en ms.
|
|
107
|
+
*/
|
|
108
|
+
private retryDelay;
|
|
109
|
+
/**
|
|
110
|
+
* Sobreescribe el método `request` de `BaseClient` para añadir:
|
|
111
|
+
* - Circuit breaker check antes de cada petición
|
|
112
|
+
* - Timeout con AbortController
|
|
113
|
+
* - Retry con backoff exponencial para errores reintentables
|
|
114
|
+
* - Logging estructurado de cada intento
|
|
115
|
+
*
|
|
116
|
+
* @param method - Método HTTP.
|
|
117
|
+
* @param path - Path del endpoint (sin query con credenciales).
|
|
118
|
+
* @param body - Body opcional.
|
|
119
|
+
* @returns Resultado desempaquetado del envelope Freemática.
|
|
120
|
+
*/
|
|
121
|
+
protected request<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body?: unknown): Promise<T>;
|
|
122
|
+
/**
|
|
123
|
+
* Ejecuta la petición HTTP usando el AxiosInstance del padre con soporte
|
|
124
|
+
* para AbortSignal.
|
|
125
|
+
*
|
|
126
|
+
* Usa los métodos `mapEnvelopeError` y `mapAxiosError` heredados de
|
|
127
|
+
* `BaseClient` (ahora `protected`) para evitar duplicación de lógica.
|
|
128
|
+
*
|
|
129
|
+
* @param method - Método HTTP.
|
|
130
|
+
* @param path - Ruta del endpoint.
|
|
131
|
+
* @param body - Body opcional.
|
|
132
|
+
* @param signal - AbortSignal para timeout.
|
|
133
|
+
* @returns Resultado desempaquetado.
|
|
134
|
+
*/
|
|
135
|
+
private requestWithSignal;
|
|
136
|
+
/**
|
|
137
|
+
* Expone las métricas del circuit breaker para observabilidad.
|
|
138
|
+
*
|
|
139
|
+
* @returns Estado actual del circuit breaker.
|
|
140
|
+
*/
|
|
141
|
+
getCircuitBreakerState(): CircuitState;
|
|
142
|
+
}
|
|
143
|
+
export {};
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import { BaseClient, FreematicaError } from './base-client.js';
|
|
3
|
+
import { logger } from '../logger.js';
|
|
4
|
+
/** Delays base del backoff exponencial (en ms). */
|
|
5
|
+
const BACKOFF_DELAYS_MS = [500, 1000, 2000];
|
|
6
|
+
/** Jitter máximo añadido a cada delay (ms). */
|
|
7
|
+
const MAX_JITTER_MS = 200;
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Circuit breaker (in-memory, per client instance)
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Circuit Breaker in-memory para proteger contra cascadas de fallos.
|
|
13
|
+
*
|
|
14
|
+
* ### Implementación
|
|
15
|
+
* Patrón clásico de 3 estados:
|
|
16
|
+
* - **closed** → peticiones normales. Contador de fallos consecutivos.
|
|
17
|
+
* - **open** → tras `threshold` fallos, bloquea durante `timeoutMs`.
|
|
18
|
+
* - **half-open** → permite 1 petición de prueba. Si tiene éxito → closed.
|
|
19
|
+
* Si falla → vuelve a open.
|
|
20
|
+
*
|
|
21
|
+
* Esta implementación es ligera y sin dependencias externas. No usa timers
|
|
22
|
+
* activos (lazy evaluation): el estado se recalcula en cada llamada.
|
|
23
|
+
*/
|
|
24
|
+
class CircuitBreaker {
|
|
25
|
+
state = 'closed';
|
|
26
|
+
consecutiveFailures = 0;
|
|
27
|
+
openedAt = null;
|
|
28
|
+
threshold;
|
|
29
|
+
timeoutMs;
|
|
30
|
+
constructor(threshold, timeoutMs) {
|
|
31
|
+
this.threshold = threshold;
|
|
32
|
+
this.timeoutMs = timeoutMs;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Retorna el estado actual del circuit breaker, teniendo en cuenta si el
|
|
36
|
+
* timeout de apertura ya expiró (transición open → half-open).
|
|
37
|
+
*/
|
|
38
|
+
getState() {
|
|
39
|
+
if (this.state === 'open' && this.openedAt !== null) {
|
|
40
|
+
const elapsed = Date.now() - this.openedAt;
|
|
41
|
+
if (elapsed >= this.timeoutMs) {
|
|
42
|
+
this.state = 'half-open';
|
|
43
|
+
logger.info({ circuitBreaker: 'half-open' }, 'Circuit breaker transitioning to half-open');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return this.state;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Registra un éxito: resetea el contador de fallos y cierra el circuito.
|
|
50
|
+
*/
|
|
51
|
+
recordSuccess() {
|
|
52
|
+
if (this.state !== 'closed') {
|
|
53
|
+
logger.info({ circuitBreaker: 'closed' }, 'Circuit breaker closed after successful request');
|
|
54
|
+
}
|
|
55
|
+
this.state = 'closed';
|
|
56
|
+
this.consecutiveFailures = 0;
|
|
57
|
+
this.openedAt = null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Registra un fallo lógico (operación post-retry-exhaustion) e incrementa
|
|
61
|
+
* el contador de fallos consecutivos. Abre el circuito si se supera el umbral.
|
|
62
|
+
*
|
|
63
|
+
* ### Semántica de "fallo lógico"
|
|
64
|
+
*
|
|
65
|
+
* El circuit breaker cuenta **operaciones fallidas después de agotar todos
|
|
66
|
+
* los reintentos**, NO intentos HTTP individuales. Con los valores por defecto
|
|
67
|
+
* (threshold=5, maxRetries=3), se pueden producir hasta 5 × (3 + 1) = **20
|
|
68
|
+
* peticiones HTTP upstream** antes de que el breaker se abra. Esto es
|
|
69
|
+
* intencionado: los blips transitorios (errores 5xx esporádicos que se
|
|
70
|
+
* resuelven en el segundo intento) NO deben abrir el circuito.
|
|
71
|
+
*
|
|
72
|
+
* Ajusta via:
|
|
73
|
+
* - `FREEMATICA_CIRCUIT_BREAKER_THRESHOLD` (default 5)
|
|
74
|
+
* - `FREEMATICA_MAX_RETRIES` (default 3)
|
|
75
|
+
*/
|
|
76
|
+
recordFailure() {
|
|
77
|
+
this.consecutiveFailures++;
|
|
78
|
+
if (this.state === 'half-open' || this.consecutiveFailures >= this.threshold) {
|
|
79
|
+
this.state = 'open';
|
|
80
|
+
this.openedAt = Date.now();
|
|
81
|
+
logger.warn({
|
|
82
|
+
circuitBreaker: 'open',
|
|
83
|
+
consecutiveFailures: this.consecutiveFailures,
|
|
84
|
+
threshold: this.threshold,
|
|
85
|
+
}, 'Circuit breaker opened');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Verifica si una petición puede pasar según el estado actual.
|
|
90
|
+
*
|
|
91
|
+
* @throws {FreematicaError} Si el circuito está abierto.
|
|
92
|
+
*/
|
|
93
|
+
allowRequest() {
|
|
94
|
+
const state = this.getState();
|
|
95
|
+
if (state === 'open') {
|
|
96
|
+
throw new FreematicaError('server_error', 'Circuit breaker is open: too many consecutive failures. Retry later.');
|
|
97
|
+
}
|
|
98
|
+
// half-open: permite pasar pero no cambia el estado hasta ver el resultado
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// HardenedBaseClient
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
/**
|
|
105
|
+
* Cliente base con hardening de producción.
|
|
106
|
+
*
|
|
107
|
+
* Extiende `BaseClient` añadiendo:
|
|
108
|
+
*
|
|
109
|
+
* - **Timeout configurable** vía `FREEMATICA_TIMEOUT_MS` (default 30s).
|
|
110
|
+
* Implementado con `AbortController` para poder cancelar peticiones que ya
|
|
111
|
+
* han comenzado.
|
|
112
|
+
*
|
|
113
|
+
* - **Retry con backoff exponencial** para errores 5xx y errores de red.
|
|
114
|
+
* Delays: 500ms, 1000ms, 2000ms + jitter aleatorio 0..200ms.
|
|
115
|
+
* Los errores 4xx nunca se reintentan.
|
|
116
|
+
* Configurable vía `FREEMATICA_MAX_RETRIES` (default 3).
|
|
117
|
+
*
|
|
118
|
+
* - **Circuit breaker** in-memory: tras `threshold` fallos consecutivos abre
|
|
119
|
+
* el circuito durante `timeoutMs` ms. Luego pasa a half-open.
|
|
120
|
+
* Configurable vía `FREEMATICA_CIRCUIT_BREAKER_THRESHOLD` (default 5) y
|
|
121
|
+
* `FREEMATICA_CIRCUIT_BREAKER_TIMEOUT_MS` (default 30000).
|
|
122
|
+
*
|
|
123
|
+
* **IMPORTANTE — Semántica de conteo del circuit breaker**: el breaker cuenta
|
|
124
|
+
* operaciones lógicas fallidas (post-retry-exhaustion), NO intentos HTTP
|
|
125
|
+
* individuales. Con threshold=5 y maxRetries=3, hacen falta hasta
|
|
126
|
+
* 5 × (3 + 1) = 20 fallos HTTP upstream para abrir el circuito.
|
|
127
|
+
* Los blips transitorios que se resuelven en el primer reintento NO cuentan.
|
|
128
|
+
* Ajusta `FREEMATICA_CIRCUIT_BREAKER_THRESHOLD` y `FREEMATICA_MAX_RETRIES`
|
|
129
|
+
* según la tolerancia a fallos de tu sistema.
|
|
130
|
+
*
|
|
131
|
+
* - **Logging estructurado con pino**: cada petición se loguea con
|
|
132
|
+
* `requestId`, `method`, `path`, `duration_ms`, `status`. Los headers
|
|
133
|
+
* x-auth-* NUNCA se loguean.
|
|
134
|
+
*
|
|
135
|
+
* ### Compatibilidad
|
|
136
|
+
*
|
|
137
|
+
* `HardenedBaseClient` es una extensión directa de `BaseClient`. `FreematicaClient`
|
|
138
|
+
* puede extenderlo en lugar de `BaseClient` sin cambios en su API pública.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* class FreematicaClient extends HardenedBaseClient {
|
|
142
|
+
* async listClientes() { return this.get('/clientes'); }
|
|
143
|
+
* }
|
|
144
|
+
*/
|
|
145
|
+
export class HardenedBaseClient extends BaseClient {
|
|
146
|
+
maxRetries;
|
|
147
|
+
circuitBreaker;
|
|
148
|
+
requestTimeoutMs;
|
|
149
|
+
constructor(config) {
|
|
150
|
+
// Resolver valores desde config o variables de entorno
|
|
151
|
+
const timeoutMs = config.timeoutMs ??
|
|
152
|
+
(process.env['FREEMATICA_TIMEOUT_MS']
|
|
153
|
+
? Number(process.env['FREEMATICA_TIMEOUT_MS'])
|
|
154
|
+
: 30_000);
|
|
155
|
+
super({ ...config, timeoutMs });
|
|
156
|
+
this.requestTimeoutMs = timeoutMs;
|
|
157
|
+
this.maxRetries =
|
|
158
|
+
config.maxRetries ??
|
|
159
|
+
(process.env['FREEMATICA_MAX_RETRIES']
|
|
160
|
+
? Number(process.env['FREEMATICA_MAX_RETRIES'])
|
|
161
|
+
: 3);
|
|
162
|
+
const cbThreshold = config.circuitBreakerThreshold ??
|
|
163
|
+
(process.env['FREEMATICA_CIRCUIT_BREAKER_THRESHOLD']
|
|
164
|
+
? Number(process.env['FREEMATICA_CIRCUIT_BREAKER_THRESHOLD'])
|
|
165
|
+
: 5);
|
|
166
|
+
const cbTimeoutMs = config.circuitBreakerTimeoutMs ??
|
|
167
|
+
(process.env['FREEMATICA_CIRCUIT_BREAKER_TIMEOUT_MS']
|
|
168
|
+
? Number(process.env['FREEMATICA_CIRCUIT_BREAKER_TIMEOUT_MS'])
|
|
169
|
+
: 30_000);
|
|
170
|
+
this.circuitBreaker = new CircuitBreaker(cbThreshold, cbTimeoutMs);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Calcula el delay de backoff para un intento dado.
|
|
174
|
+
*
|
|
175
|
+
* @param attempt - Número de intento (0-based).
|
|
176
|
+
* @returns Delay en ms con jitter aleatorio.
|
|
177
|
+
*/
|
|
178
|
+
backoffDelay(attempt) {
|
|
179
|
+
const base = BACKOFF_DELAYS_MS[Math.min(attempt, BACKOFF_DELAYS_MS.length - 1)] ?? 2000;
|
|
180
|
+
const jitter = Math.floor(Math.random() * MAX_JITTER_MS);
|
|
181
|
+
return base + jitter;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Determina si un error de Freemática debe reintentarse.
|
|
185
|
+
*
|
|
186
|
+
* Se reintentan:
|
|
187
|
+
* - `server_error` (5xx)
|
|
188
|
+
* - `network_error` (ECONNREFUSED, ETIMEDOUT, etc.)
|
|
189
|
+
* - `rate_limit_exceeded` (429): se reintenta honrando el header `Retry-After`
|
|
190
|
+
* cuando está disponible en `FreematicaError.retryAfter`. Si no hay valor,
|
|
191
|
+
* se usa el backoff exponencial estándar.
|
|
192
|
+
*
|
|
193
|
+
* Los errores 4xx restantes (`invalid_token`, `forbidden`, `not_found`)
|
|
194
|
+
* NO se reintentan ya que no son transitorios.
|
|
195
|
+
*
|
|
196
|
+
* @param err - Error a evaluar.
|
|
197
|
+
* @returns `true` si debe reintentarse.
|
|
198
|
+
*/
|
|
199
|
+
isRetryable(err) {
|
|
200
|
+
return err.code === 'server_error' || err.code === 'network_error' || err.code === 'rate_limit_exceeded';
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Calcula el delay de reintento para un error dado.
|
|
204
|
+
*
|
|
205
|
+
* Si el error es `rate_limit_exceeded` y tiene `retryAfter` definido y > 0,
|
|
206
|
+
* usa `retryAfter * 1000` ms en lugar del backoff exponencial. Esto honra
|
|
207
|
+
* el header `Retry-After` del servidor y evita martillear la API con
|
|
208
|
+
* backoffs arbitrarios.
|
|
209
|
+
*
|
|
210
|
+
* @param err - Error que causó el reintento.
|
|
211
|
+
* @param attempt - Número de intento (0-based, se pasa attempt-1 al llamador).
|
|
212
|
+
* @returns Delay en ms.
|
|
213
|
+
*/
|
|
214
|
+
retryDelay(err, attempt) {
|
|
215
|
+
if (err.code === 'rate_limit_exceeded' && err.retryAfter !== undefined && err.retryAfter > 0) {
|
|
216
|
+
return err.retryAfter * 1000;
|
|
217
|
+
}
|
|
218
|
+
return this.backoffDelay(attempt);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Sobreescribe el método `request` de `BaseClient` para añadir:
|
|
222
|
+
* - Circuit breaker check antes de cada petición
|
|
223
|
+
* - Timeout con AbortController
|
|
224
|
+
* - Retry con backoff exponencial para errores reintentables
|
|
225
|
+
* - Logging estructurado de cada intento
|
|
226
|
+
*
|
|
227
|
+
* @param method - Método HTTP.
|
|
228
|
+
* @param path - Path del endpoint (sin query con credenciales).
|
|
229
|
+
* @param body - Body opcional.
|
|
230
|
+
* @returns Resultado desempaquetado del envelope Freemática.
|
|
231
|
+
*/
|
|
232
|
+
async request(method, path, body) {
|
|
233
|
+
// Circuit breaker check
|
|
234
|
+
this.circuitBreaker.allowRequest();
|
|
235
|
+
const requestId = uuidv4();
|
|
236
|
+
// Extraer sólo el path (sin query con credenciales) para el log
|
|
237
|
+
const logPath = path.split('?')[0] ?? path;
|
|
238
|
+
let lastError;
|
|
239
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
240
|
+
const start = Date.now();
|
|
241
|
+
if (attempt > 0 && lastError !== undefined) {
|
|
242
|
+
const delay = this.retryDelay(lastError, attempt - 1);
|
|
243
|
+
logger.debug({ requestId, attempt, delay_ms: delay, reason: lastError.code }, 'Retrying request after backoff delay');
|
|
244
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
// Timeout con AbortController
|
|
248
|
+
const controller = new AbortController();
|
|
249
|
+
const timeoutHandle = setTimeout(() => controller.abort(), this.requestTimeoutMs);
|
|
250
|
+
let result;
|
|
251
|
+
try {
|
|
252
|
+
result = await this.requestWithSignal(method, path, body, controller.signal);
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
clearTimeout(timeoutHandle);
|
|
256
|
+
}
|
|
257
|
+
const duration = Date.now() - start;
|
|
258
|
+
logger.info({
|
|
259
|
+
requestId,
|
|
260
|
+
method,
|
|
261
|
+
path: logPath,
|
|
262
|
+
duration_ms: duration,
|
|
263
|
+
status: 'ok',
|
|
264
|
+
attempt,
|
|
265
|
+
}, 'HTTP request completed');
|
|
266
|
+
this.circuitBreaker.recordSuccess();
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
const duration = Date.now() - start;
|
|
271
|
+
// Mapear AbortError/ERR_CANCELED (timeout via AbortController) a network_error.
|
|
272
|
+
// Axios transforma el AbortSignal abort en un AxiosError con code='ERR_CANCELED'
|
|
273
|
+
// (o en algunos entornos un Error con name='AbortError'). Ambos indican timeout.
|
|
274
|
+
let freematicaErr;
|
|
275
|
+
const isAbort = (err instanceof Error && err.name === 'AbortError') ||
|
|
276
|
+
(err instanceof Error && err.code === 'ERR_CANCELED') ||
|
|
277
|
+
(err instanceof Error && err.message.toLowerCase().includes('cancel'));
|
|
278
|
+
if (isAbort) {
|
|
279
|
+
freematicaErr = new FreematicaError('network_error', `Request timed out after ${this.requestTimeoutMs}ms`);
|
|
280
|
+
}
|
|
281
|
+
else if (err instanceof FreematicaError) {
|
|
282
|
+
freematicaErr = err;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
freematicaErr = new FreematicaError('unexpected_error', err instanceof Error ? err.message : String(err));
|
|
286
|
+
}
|
|
287
|
+
logger.warn({
|
|
288
|
+
requestId,
|
|
289
|
+
method,
|
|
290
|
+
path: logPath,
|
|
291
|
+
duration_ms: duration,
|
|
292
|
+
status: 'error',
|
|
293
|
+
errorCode: freematicaErr.code,
|
|
294
|
+
attempt,
|
|
295
|
+
maxRetries: this.maxRetries,
|
|
296
|
+
}, 'HTTP request failed');
|
|
297
|
+
lastError = freematicaErr;
|
|
298
|
+
// No reintentar 4xx ni unexpected_error
|
|
299
|
+
if (!this.isRetryable(freematicaErr)) {
|
|
300
|
+
this.circuitBreaker.recordFailure();
|
|
301
|
+
throw freematicaErr;
|
|
302
|
+
}
|
|
303
|
+
// Si quedan intentos, registrar fallo y continuar
|
|
304
|
+
if (attempt < this.maxRetries) {
|
|
305
|
+
// Registramos fallo temporal en CB pero no lo abrimos prematuramente
|
|
306
|
+
// sólo si ya hemos agotado todos los retries:
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
// Agotados todos los reintentos
|
|
310
|
+
this.circuitBreaker.recordFailure();
|
|
311
|
+
throw freematicaErr;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// Este punto es inalcanzable pero TypeScript lo requiere
|
|
315
|
+
this.circuitBreaker.recordFailure();
|
|
316
|
+
throw lastError ?? new FreematicaError('unexpected_error', 'Unknown error in retry loop');
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Ejecuta la petición HTTP usando el AxiosInstance del padre con soporte
|
|
320
|
+
* para AbortSignal.
|
|
321
|
+
*
|
|
322
|
+
* Usa los métodos `mapEnvelopeError` y `mapAxiosError` heredados de
|
|
323
|
+
* `BaseClient` (ahora `protected`) para evitar duplicación de lógica.
|
|
324
|
+
*
|
|
325
|
+
* @param method - Método HTTP.
|
|
326
|
+
* @param path - Ruta del endpoint.
|
|
327
|
+
* @param body - Body opcional.
|
|
328
|
+
* @param signal - AbortSignal para timeout.
|
|
329
|
+
* @returns Resultado desempaquetado.
|
|
330
|
+
*/
|
|
331
|
+
async requestWithSignal(method, path, body, signal) {
|
|
332
|
+
try {
|
|
333
|
+
const res = await this.http.request({
|
|
334
|
+
method,
|
|
335
|
+
url: path,
|
|
336
|
+
data: body,
|
|
337
|
+
signal,
|
|
338
|
+
});
|
|
339
|
+
const envelope = res.data;
|
|
340
|
+
if (envelope?.errorCode !== '200') {
|
|
341
|
+
throw this.mapEnvelopeError(envelope);
|
|
342
|
+
}
|
|
343
|
+
return envelope.data;
|
|
344
|
+
}
|
|
345
|
+
catch (err) {
|
|
346
|
+
if (err instanceof FreematicaError)
|
|
347
|
+
throw err;
|
|
348
|
+
// AbortError y ERR_CANCELED (Axios) propagados directamente para que el
|
|
349
|
+
// catch del retry loop los mapee a network_error con mensaje "timed out"
|
|
350
|
+
if (err instanceof Error && err.name === 'AbortError')
|
|
351
|
+
throw err;
|
|
352
|
+
if (err instanceof Error && err.code === 'ERR_CANCELED')
|
|
353
|
+
throw err;
|
|
354
|
+
throw this.mapAxiosError(err);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Expone las métricas del circuit breaker para observabilidad.
|
|
359
|
+
*
|
|
360
|
+
* @returns Estado actual del circuit breaker.
|
|
361
|
+
*/
|
|
362
|
+
getCircuitBreakerState() {
|
|
363
|
+
return this.circuitBreaker.getState();
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=hardened-base-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardened-base-client.js","sourceRoot":"","sources":["../../src/clients/hardened-base-client.ts"],"names":[],"mappings":"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"}
|