UNPKG

@mornya/restful-libs

Version:

The project of wrapped library for RESTful API processing module.

60 lines (59 loc) 2.25 kB
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 = {}));