UNPKG

@tech-arelius/api-client

Version:

Configurable HTTP client with builder pattern for Node.js/TypeScript

74 lines 2.58 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiClient = void 0; const axios_1 = __importDefault(require("axios")); /** * Main API client with prebuilt methods and convenience functions */ class ApiClient { constructor(baseUrl, timeout, defaultHeaders, interceptors) { this.defaultHeaders = {}; this.defaultHeaders = defaultHeaders || {}; this.axiosInstance = axios_1.default.create({ baseURL: baseUrl, timeout: timeout, headers: { ...this.defaultHeaders } }); // Add interceptors if (interceptors) { interceptors.forEach(interceptor => { if (interceptor.onRequest) { this.axiosInstance.interceptors.request.use(interceptor.onRequest); } if (interceptor.onResponse) { this.axiosInstance.interceptors.response.use(interceptor.onResponse); } if (interceptor.onError) { this.axiosInstance.interceptors.response.use(response => response, interceptor.onError); } }); } } /** * Core HTTP methods - direct axios pass-throughs */ async get(url, config) { const response = await this.axiosInstance.get(url, config); return response; } async post(url, data, config) { const response = await this.axiosInstance.post(url, data, config); return response; } async put(url, data, config) { const response = await this.axiosInstance.put(url, data, config); return response; } async delete(url, config) { const response = await this.axiosInstance.delete(url, config); return response; } async patch(url, data, config) { const response = await this.axiosInstance.patch(url, data, config); return response; } async head(url, config) { const response = await this.axiosInstance.head(url, config); return response; } async options(url, config) { const response = await this.axiosInstance.options(url, config); return response; } async request(config) { const response = await this.axiosInstance.request(config); return response; } } exports.ApiClient = ApiClient; //# sourceMappingURL=ApiClient.js.map