Skip to content

Commit 7f0c090

Browse files
JesusMendozaJesusMendoza
authored andcommitted
modules naming convention standarized added
1 parent 731428d commit 7f0c090

16 files changed

Lines changed: 64 additions & 64 deletions

examples/ejemplos-factura-nomina-referencias.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ inspect.defaultOptions.colors = true;
1818

1919
// Configuración de FiscalAPI
2020
const settings: FiscalapiSettings = {
21-
apiUrl: 'https://test.fisalapi.com',
21+
apiUrl: 'https://test.fisalapi.com',
2222
apiKey: '<API_KEY>',
2323
tenant: '<TENANT_ID>',
2424
debug: true
25+
26+
2527
};
2628

2729
// ============================================================================
@@ -1218,8 +1220,8 @@ async function main(): Promise<void> {
12181220
// IMPORTANTE: Ejecutar primero la función de setup, luego la de factura
12191221

12201222
// 1. Nómina Ordinaria
1221-
// await nominaOrdinariaByReferencesSetupData(client);
1222-
// await nominaOrdinariaByReferences(client);
1223+
await nominaOrdinariaByReferencesSetupData(client);
1224+
await nominaOrdinariaByReferences(client);
12231225

12241226
// 2. Nómina Asimilados
12251227
// await nominaAsimiladosByReferencesSetupData(client);

examples/ejemplos-factura-nomina-valores.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ inspect.defaultOptions.colors = true;
1212

1313
// Configuración de FiscalAPI
1414
const settings: FiscalapiSettings = {
15-
apiUrl: 'https://test.fisalapi.com',
16-
apiKey: '<API_KEY>',
17-
tenant: '<TENANT_ID>',
18-
debug: true
15+
apiUrl: 'https://test.fisalapi.com',
16+
apiKey: '<API_KEY>',
17+
tenant: '<TENANT_ID>',
18+
debug: true
1919
};
2020

2121
// Sellos SAT de prueba
@@ -1103,19 +1103,19 @@ async function main(): Promise<void> {
11031103
try {
11041104
// Descomentar el caso de uso que se desea ejecutar
11051105

1106-
// await nominaOrdinariaByValues(client);
1106+
await nominaOrdinariaByValues(client);
11071107
// await nominaAsimiladosByValues(client);
11081108
// await nominaConBonosFondoAhorroByValues(client);
11091109
// await nominaConHorasExtraByValues(client);
11101110
// await nominaConIncapacidadesByValues(client);
1111-
await nominaConSNCFByValues(client);
1111+
// await nominaConSNCFByValues(client);
11121112
// await nominaExtraordinariaByValues(client);
11131113
// await nominaSeparacionIndemnizacionByValues(client);
11141114
// await nominaJubilacionPensionRetiroByValues(client);
11151115
// await nominaSinDeduccionesByValues(client);
11161116
// await nominaSubsidioCausadoByValues(client);
11171117
// await nominaViaticosByValues(client);
1118-
await nominaGeneralByValues(client);
1118+
// await nominaGeneralByValues(client);
11191119

11201120
console.log('\nEjecución completada.');
11211121
} catch (error) {
File renamed without changes.

src/abstractions/download-request.service.interface.ts renamed to src/abstractions/download-request-service.interface.ts

File renamed without changes.
File renamed without changes.

src/abstractions/fiscalapi-client.interface.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { IApiKeyService } from './api-key-service.interface';
22
import { ICatalogService } from './catalog-service.interface';
3-
import { IDownloadCatalogService } from './download-catalog.interface';
4-
import { IDownloadRequestService } from './download-request.service.interface';
5-
import { IDownloadRuleService } from './download-rule.service.interface';
3+
import { IDownloadCatalogService } from './download-catalog-service.interface';
4+
import { IDownloadRequestService } from './download-request-service.interface';
5+
import { IDownloadRuleService } from './download-rule-service.interface';
66
import { IInvoiceService } from './invoice-service.interface';
77
import { IPersonService } from './person-service.interface';
88
import { IProductService } from './product-service.interface';

src/abstractions/tax-file-service.interface.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import { IFiscalapiService } from './fiscalapi-service.interface';
32
import { TaxFile } from '../models/tax-file';
43
import { ApiResponse } from '../common/api-response';
@@ -16,15 +15,14 @@ export interface ITaxFileService extends IFiscalapiService<TaxFile> {
1615
* @param personId - Id de la persona propietaria de los certificados
1716
* @returns Promise que resuelve en una respuesta API con una lista de un par de certificados, pero sin contenido, solo sus Ids
1817
*/
19-
getDefaultReferences(personId: string): Promise<ApiResponse<TaxFile[]>>
18+
getDefaultReferences(personId: string): Promise<ApiResponse<TaxFile[]>>;
2019

2120
/**
2221
* Obtiene el último par de certificados válidos y vigente de una persona. Es decir sus certificados por defecto
2322
*
2423
* @param personId - Id de la persona dueña de los certificados
2524
* @returns Promise que resuelve en una respuesta API con una lista de un par de certificados
2625
*/
27-
getDefaultValues(personId: string): Promise<ApiResponse<TaxFile[]>>
28-
26+
getDefaultValues(personId: string): Promise<ApiResponse<TaxFile[]>>;
2927
}
3028

src/http/fiscalapi-http-client.interface.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,6 @@ export interface IFiscalapiHttpClient {
3333
*/
3434
getAsync<T>(endpoint: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
3535

36-
/**
37-
* Realiza una petición GET por ID a la API
38-
* @param endpoint - Punto final de la API con ID
39-
* @param config - Configuración adicional para la petición
40-
* @returns Respuesta de la API
41-
*/
42-
getByIdAsync<T>(endpoint: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
43-
4436
/**
4537
* Realiza una petición POST a la API
4638
* @param endpoint - Punto final de la API

src/http/fiscalapi-http-client.ts

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ export type { IInvoiceService } from './abstractions/invoice-service.interface';
1010
export type { IPersonService } from './abstractions/person-service.interface';
1111
export type { IProductService } from './abstractions/product-service.interface';
1212
export type { ITaxFileService } from './abstractions/tax-file-service.interface';
13-
export type { IDownloadCatalogService } from './abstractions/download-catalog.interface';
14-
export type { IDownloadRequestService } from './abstractions/download-request.service.interface';
15-
export type { IDownloadRuleService } from './abstractions/download-rule.service.interface';
13+
export type { IDownloadCatalogService } from './abstractions/download-catalog-service.interface';
14+
export type { IDownloadRequestService } from './abstractions/download-request-service.interface';
15+
export type { IDownloadRuleService } from './abstractions/download-rule-service.interface';
1616
export type { IStampService } from './abstractions/stamp-service.interface';
1717
export type { IEmployeeService } from './abstractions/employee-service.interface';
1818
export type { IEmployerService } from './abstractions/employer-service.interface';

0 commit comments

Comments
 (0)