UNPKG

shipstation-node

Version:
41 lines (40 loc) 1.35 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const axios_1 = __importDefault(require("axios")); const axios_retry_1 = __importDefault(require("axios-retry")); const limiter_1 = require("limiter"); class BaseAPI { type; baseURL; requestConfig; limiter; authHeaders; constructor(type, baseUrl, rateLimitOpts, options) { this.type = type; this.baseURL = baseUrl; // Initialize rate limiter this.limiter = new limiter_1.RateLimiter(rateLimitOpts); // Retry failed requests if (options.retryConfig) { (0, axios_retry_1.default)(axios_1.default, options.retryConfig); } } request = async (requestData) => { if (!this.authHeaders) { throw new Error(`Credentials are not set for the ${this.type} API`); } // Wait for rate limit token await this.limiter.removeTokens(1); const response = await axios_1.default.request({ baseURL: this.baseURL, headers: this.authHeaders, ...this.requestConfig, ...requestData }); return response.data; }; } exports.default = BaseAPI;