UNPKG

@crowdin/crowdin-api-client

Version:
41 lines (40 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AxiosProvider = void 0; const axios_1 = require("axios"); /** * @internal */ class AxiosProvider { constructor() { this.pendingRequests = 0; this.axios = axios_1.default.create({}); this.configureRequest(); this.configureResponse(); } configureRequest() { this.axios.interceptors.request.use((config) => { return new Promise((resolve) => { const interval = setInterval(() => { if (this.pendingRequests < AxiosProvider.CROWDIN_API_MAX_CONCURRENT_REQUESTS) { this.pendingRequests++; clearInterval(interval); resolve(config); } }, AxiosProvider.CROWDIN_API_REQUESTS_INTERVAL_MS); }); }); } configureResponse() { this.axios.interceptors.response.use((response) => { this.pendingRequests = Math.max(0, this.pendingRequests - 1); return Promise.resolve(response.data); }, (error) => { this.pendingRequests = Math.max(0, this.pendingRequests - 1); return Promise.reject(error); }); } } exports.AxiosProvider = AxiosProvider; AxiosProvider.CROWDIN_API_MAX_CONCURRENT_REQUESTS = 15; AxiosProvider.CROWDIN_API_REQUESTS_INTERVAL_MS = 10;