@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.
Files changed (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +485 -0
  3. package/dist/clients/base-client.d.ts +31 -0
  4. package/dist/clients/base-client.js +102 -0
  5. package/dist/clients/base-client.js.map +1 -0
  6. package/dist/clients/fiql-builder.d.ts +118 -0
  7. package/dist/clients/fiql-builder.js +257 -0
  8. package/dist/clients/fiql-builder.js.map +1 -0
  9. package/dist/clients/freematica-client.d.ts +659 -0
  10. package/dist/clients/freematica-client.js +1327 -0
  11. package/dist/clients/freematica-client.js.map +1 -0
  12. package/dist/clients/hardened-base-client.d.ts +143 -0
  13. package/dist/clients/hardened-base-client.js +366 -0
  14. package/dist/clients/hardened-base-client.js.map +1 -0
  15. package/dist/config.d.ts +104 -0
  16. package/dist/config.js +105 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.js +55 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/logger.d.ts +71 -0
  22. package/dist/logger.js +114 -0
  23. package/dist/logger.js.map +1 -0
  24. package/dist/schemas/albaranes.d.ts +124 -0
  25. package/dist/schemas/albaranes.js +250 -0
  26. package/dist/schemas/albaranes.js.map +1 -0
  27. package/dist/schemas/cartera.d.ts +70 -0
  28. package/dist/schemas/cartera.js +104 -0
  29. package/dist/schemas/cartera.js.map +1 -0
  30. package/dist/schemas/contratos.d.ts +7 -0
  31. package/dist/schemas/contratos.js +2 -0
  32. package/dist/schemas/contratos.js.map +1 -0
  33. package/dist/schemas/facturas-electronicas.d.ts +60 -0
  34. package/dist/schemas/facturas-electronicas.js +79 -0
  35. package/dist/schemas/facturas-electronicas.js.map +1 -0
  36. package/dist/schemas/facturas-ventas.d.ts +118 -0
  37. package/dist/schemas/facturas-ventas.js +153 -0
  38. package/dist/schemas/facturas-ventas.js.map +1 -0
  39. package/dist/schemas/filters.d.ts +92 -0
  40. package/dist/schemas/filters.js +76 -0
  41. package/dist/schemas/filters.js.map +1 -0
  42. package/dist/schemas/master-data.d.ts +26 -0
  43. package/dist/schemas/master-data.js +86 -0
  44. package/dist/schemas/master-data.js.map +1 -0
  45. package/dist/schemas/pagination.d.ts +14 -0
  46. package/dist/schemas/pagination.js +27 -0
  47. package/dist/schemas/pagination.js.map +1 -0
  48. package/dist/schemas/pedidos-compras.d.ts +92 -0
  49. package/dist/schemas/pedidos-compras.js +189 -0
  50. package/dist/schemas/pedidos-compras.js.map +1 -0
  51. package/dist/server-instructions.d.ts +1 -0
  52. package/dist/server-instructions.js +83 -0
  53. package/dist/server-instructions.js.map +1 -0
  54. package/dist/server.d.ts +6 -0
  55. package/dist/server.js +41 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/tools/albaranes.d.ts +16 -0
  58. package/dist/tools/albaranes.js +202 -0
  59. package/dist/tools/albaranes.js.map +1 -0
  60. package/dist/tools/calendarios.d.ts +13 -0
  61. package/dist/tools/calendarios.js +82 -0
  62. package/dist/tools/calendarios.js.map +1 -0
  63. package/dist/tools/cartera.d.ts +13 -0
  64. package/dist/tools/cartera.js +78 -0
  65. package/dist/tools/cartera.js.map +1 -0
  66. package/dist/tools/clientes.d.ts +3 -0
  67. package/dist/tools/clientes.js +48 -0
  68. package/dist/tools/clientes.js.map +1 -0
  69. package/dist/tools/contabilidad.d.ts +14 -0
  70. package/dist/tools/contabilidad.js +259 -0
  71. package/dist/tools/contabilidad.js.map +1 -0
  72. package/dist/tools/contactos-clientes.d.ts +3 -0
  73. package/dist/tools/contactos-clientes.js +25 -0
  74. package/dist/tools/contactos-clientes.js.map +1 -0
  75. package/dist/tools/contratos.d.ts +10 -0
  76. package/dist/tools/contratos.js +35 -0
  77. package/dist/tools/contratos.js.map +1 -0
  78. package/dist/tools/facturas-compras.d.ts +13 -0
  79. package/dist/tools/facturas-compras.js +131 -0
  80. package/dist/tools/facturas-compras.js.map +1 -0
  81. package/dist/tools/facturas-electronicas.d.ts +17 -0
  82. package/dist/tools/facturas-electronicas.js +268 -0
  83. package/dist/tools/facturas-electronicas.js.map +1 -0
  84. package/dist/tools/facturas-ventas.d.ts +16 -0
  85. package/dist/tools/facturas-ventas.js +181 -0
  86. package/dist/tools/facturas-ventas.js.map +1 -0
  87. package/dist/tools/helpers.d.ts +17 -0
  88. package/dist/tools/helpers.js +36 -0
  89. package/dist/tools/helpers.js.map +1 -0
  90. package/dist/tools/localizaciones.d.ts +17 -0
  91. package/dist/tools/localizaciones.js +192 -0
  92. package/dist/tools/localizaciones.js.map +1 -0
  93. package/dist/tools/master-data.d.ts +10 -0
  94. package/dist/tools/master-data.js +70 -0
  95. package/dist/tools/master-data.js.map +1 -0
  96. package/dist/tools/oportunidades-negocio.d.ts +3 -0
  97. package/dist/tools/oportunidades-negocio.js +68 -0
  98. package/dist/tools/oportunidades-negocio.js.map +1 -0
  99. package/dist/tools/pedidos-compras.d.ts +14 -0
  100. package/dist/tools/pedidos-compras.js +105 -0
  101. package/dist/tools/pedidos-compras.js.map +1 -0
  102. package/dist/tools/personal.d.ts +13 -0
  103. package/dist/tools/personal.js +154 -0
  104. package/dist/tools/personal.js.map +1 -0
  105. package/dist/tools/prl.d.ts +47 -0
  106. package/dist/tools/prl.js +242 -0
  107. package/dist/tools/prl.js.map +1 -0
  108. package/dist/tools/proveedores.d.ts +14 -0
  109. package/dist/tools/proveedores.js +122 -0
  110. package/dist/tools/proveedores.js.map +1 -0
  111. package/dist/transports/http.d.ts +12 -0
  112. package/dist/transports/http.js +110 -0
  113. package/dist/transports/http.js.map +1 -0
  114. package/dist/transports/stdio.d.ts +12 -0
  115. package/dist/transports/stdio.js +15 -0
  116. package/dist/transports/stdio.js.map +1 -0
  117. package/dist/types/api-envelope.d.ts +27 -0
  118. package/dist/types/api-envelope.js +2 -0
  119. package/dist/types/api-envelope.js.map +1 -0
  120. package/dist/types/clientes.d.ts +9 -0
  121. package/dist/types/clientes.js +2 -0
  122. package/dist/types/clientes.js.map +1 -0
  123. package/dist/types/contactos-clientes.d.ts +7 -0
  124. package/dist/types/contactos-clientes.js +2 -0
  125. package/dist/types/contactos-clientes.js.map +1 -0
  126. package/dist/types/contratos.d.ts +8 -0
  127. package/dist/types/contratos.js +2 -0
  128. package/dist/types/contratos.js.map +1 -0
  129. package/dist/types/master-data.d.ts +9 -0
  130. package/dist/types/master-data.js +2 -0
  131. package/dist/types/master-data.js.map +1 -0
  132. package/dist/types/oportunidades-negocio.d.ts +8 -0
  133. package/dist/types/oportunidades-negocio.js +2 -0
  134. package/dist/types/oportunidades-negocio.js.map +1 -0
  135. package/dist/utils/size-guardrail.d.ts +22 -0
  136. package/dist/utils/size-guardrail.js +31 -0
  137. package/dist/utils/size-guardrail.js.map +1 -0
  138. 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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"}