UNPKG

fiscalapi

Version:

SDK de Node.js para FiscalAPI

73 lines (72 loc) 2.95 kB
import { AxiosRequestConfig } from 'axios'; import { BaseDto } from '../common/base-dto'; import { ApiResponse } from '../common/api-response'; import { PagedList } from '../common/paged-list'; import { IFiscalapiHttpClient } from '../http/fiscalapi-http-client.interface'; import { IFiscalapiService, RequestOptions } from '../abstractions/fiscalapi-service.interface'; /** * Implementación base de un servicio de FiscalAPI * @template T - Tipo de DTO que maneja el servicio */ export declare abstract class BaseFiscalapiService<T extends BaseDto> implements IFiscalapiService<T> { /** Cliente HTTP */ protected readonly httpClient: IFiscalapiHttpClient; /** Ruta del recurso */ protected readonly resourcePath: string; /** Versión de la API */ protected readonly apiVersion: string; /** * Crea una nueva instancia del servicio base * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP * @param {string} resourcePath - Ruta del recurso en la API * @param {string} apiVersion - Versión de la API */ constructor(httpClient: IFiscalapiHttpClient, resourcePath: string, apiVersion: string); /** * Construye una URL de endpoint de API * @param {string} [path=''] - Segmento de ruta opcional * @param {Record<string, string>} [queryParams] - Parámetros de consulta opcionales * @returns {string} URL del endpoint * @protected */ protected buildEndpoint(path?: string, queryParams?: Record<string, string>): string; /** * Convierte los parámetros de consulta a un objeto compatible con la configuración de Axios * @param {Record<string, string>} queryParams - Parámetros de consulta * @returns {AxiosRequestConfig} Configuración de Axios con los parámetros * @protected */ protected createConfigWithParams(queryParams?: Record<string, string>): AxiosRequestConfig; /** * Ejecuta una petición HTTP personalizada con máxima flexibilidad * @param {RequestOptions<TData>} options - Opciones para la petición * @returns {Promise<ApiResponse<TResult>>} Resultado de la petición * @template TResult - Tipo de resultado esperado * @template TData - Tipo de datos de entrada */ executeRequest<TResult, TData = any>(options: RequestOptions<TData>): Promise<ApiResponse<TResult>>; /** * @inheritdoc */ getList(pageNumber: number, pageSize: number): Promise<ApiResponse<PagedList<T>>>; /** * @inheritdoc */ getById(id: string, details?: boolean): Promise<ApiResponse<T>>; /** * @inheritdoc */ create(model: T): Promise<ApiResponse<T>>; /** * @inheritdoc */ update(model: T): Promise<ApiResponse<T>>; /** * @inheritdoc */ delete(id: string): Promise<ApiResponse<boolean>>; /** * @inheritdoc */ search(searchParams: Record<string, string>): Promise<ApiResponse<PagedList<T>>>; }