@mornya/restful-libs
Version:
The project of wrapped library for RESTful API processing module.
60 lines (59 loc) • 2.25 kB
JavaScript
import axios from 'axios';
export var RequestPool;
(function (RequestPool) {
var cancelBooks = [];
var apiRequests = 0;
function getCurrentRequests() {
return apiRequests;
}
RequestPool.getCurrentRequests = getCurrentRequests;
function increaseRequest() {
return ++apiRequests;
}
RequestPool.increaseRequest = increaseRequest;
function decreaseRequest() {
apiRequests--;
if (apiRequests < 1) {
apiRequests = 0;
cancelBooks.length = 0;
}
return apiRequests;
}
RequestPool.decreaseRequest = decreaseRequest;
function getCancelBooks() {
return cancelBooks.map(function (_a) {
var cancelToken = _a.cancelToken, config = _a.config;
return ({ cancelToken: cancelToken, config: config });
});
}
RequestPool.getCancelBooks = getCancelBooks;
function hasCancelBook(axiosRequestConfig) {
if (cancelBooks.length) {
return cancelBooks.some(function (item) {
var _a, _b;
return "".concat(axiosRequestConfig.baseURL).concat(axiosRequestConfig.url) === "".concat(item.config.baseURL).concat(item.config.url) &&
((_a = axiosRequestConfig.method) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === ((_b = item.config.method) === null || _b === void 0 ? void 0 : _b.toUpperCase());
});
}
return false;
}
RequestPool.hasCancelBook = hasCancelBook;
function addCancelBook(config, canceler) {
var _a;
var cancel = axios.CancelToken.source();
cancelBooks.push({
cancelToken: (_a = config.cancelToken) !== null && _a !== void 0 ? _a : cancel.token,
canceler: canceler !== null && canceler !== void 0 ? canceler : cancel.cancel,
config: config,
});
return cancel;
}
RequestPool.addCancelBook = addCancelBook;
function burstCancelBooks() {
if (cancelBooks.length) {
cancelBooks.forEach(function (item) { return item.canceler(); });
cancelBooks.length = 0;
}
}
RequestPool.burstCancelBooks = burstCancelBooks;
})(RequestPool || (RequestPool = {}));