@@ -228,21 +228,42 @@ export class FiscalapiHttpClient implements IFiscalapiHttpClient {
228228 * @private
229229 */
230230 private handleRequestError < T > ( error : unknown ) : ApiResponse < T > {
231+ // Verificar si es un error de Axios usando type guard
232+ if ( ! ( error instanceof Error ) ) {
233+ return {
234+ data : { } as T ,
235+ succeeded : false ,
236+ message : 'Error desconocido en la comunicación con el servidor' ,
237+ details : String ( error ) ,
238+ httpStatusCode : 500
239+ } ;
240+ }
241+
242+ // Verificar si es un AxiosError (tiene la propiedad isAxiosError)
243+ const isAxiosError = 'isAxiosError' in error && error . isAxiosError === true ;
244+ if ( ! isAxiosError ) {
245+ return {
246+ data : { } as T ,
247+ succeeded : false ,
248+ message : error . message || 'Error en la comunicación con el servidor' ,
249+ details : error . stack || '' ,
250+ httpStatusCode : 500
251+ } ;
252+ }
253+
231254 const axiosError = error as AxiosError ;
232-
233- // Extraer datos de respuesta
234255 const responseData = axiosError . response ?. data ;
235-
256+
236257 // Revisar si es un ProblemDetails según RFC 9457
237258 if (
238- responseData &&
239- typeof responseData === 'object' &&
240- 'type' in responseData &&
259+ responseData &&
260+ typeof responseData === 'object' &&
261+ 'type' in responseData &&
241262 'title' in responseData &&
242263 'status' in responseData
243264 ) {
244265 const problemDetails = responseData as ProblemDetails ;
245-
266+
246267 return {
247268 data : { } as T ,
248269 succeeded : false ,
@@ -251,17 +272,17 @@ export class FiscalapiHttpClient implements IFiscalapiHttpClient {
251272 httpStatusCode : axiosError . response ?. status || 500
252273 } ;
253274 }
254-
275+
255276 // Revisar si es un ApiResponse<ValidationFailure[]> para errores 400
256277 if (
257278 axiosError . response ?. status === 400 &&
258279 responseData &&
259280 typeof responseData === 'object' &&
260281 'data' in responseData &&
261- Array . isArray ( responseData . data )
282+ Array . isArray ( ( responseData as { data : unknown } ) . data )
262283 ) {
263284 const apiResponse = responseData as ApiResponse < ValidationFailure [ ] > ;
264-
285+
265286 // Si hay errores de validación, extraer el primer mensaje
266287 if ( apiResponse . data && apiResponse . data . length > 0 ) {
267288 const firstFailure = apiResponse . data [ 0 ] ;
@@ -274,8 +295,8 @@ export class FiscalapiHttpClient implements IFiscalapiHttpClient {
274295 } ;
275296 }
276297 }
277-
278- // Respuesta de error genérica
298+
299+ // Respuesta de error genérica para AxiosError
279300 return {
280301 data : { } as T ,
281302 succeeded : false ,
@@ -296,17 +317,6 @@ export class FiscalapiHttpClient implements IFiscalapiHttpClient {
296317 return this . executeRequest < T > ( 'GET' , endpoint , { config } ) ;
297318 }
298319
299- /**
300- * Realiza una petición GET por ID a la API
301- * @param {string } endpoint - Punto final de la API con ID
302- * @param {AxiosRequestConfig } [config] - Configuración adicional para la petición
303- * @returns {Promise<ApiResponse<T>> } Respuesta de la API
304- * @template T - Tipo de datos esperado en la respuesta
305- */
306- async getByIdAsync < T > ( endpoint : string , config ?: AxiosRequestConfig ) : Promise < ApiResponse < T > > {
307- return this . executeRequest < T > ( 'GET' , endpoint , { config } ) ;
308- }
309-
310320 /**
311321 * Realiza una petición POST a la API
312322 * @param {string } endpoint - Punto final de la API
0 commit comments