@tech-arelius/api-client
Version:
Configurable HTTP client with builder pattern for Node.js/TypeScript
74 lines • 2.58 kB
JavaScript
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
;