@gravity-ui/data-source
Version:
A wrapper around data fetching
19 lines • 931 B
JavaScript
import _typeof from "@babel/runtime/helpers/typeof";
export var isCancellable = function isCancellable(value) {
return _typeof(value) === 'object' && value !== null && 'cancel' in value && typeof value.cancel === 'function';
};
export var isAbortable = function isAbortable(value) {
return _typeof(value) === 'object' && value !== null && 'signal' in value && _typeof(value.signal) === 'object' && value.signal !== null && 'addEventListener' in value.signal && typeof value.signal.addEventListener === 'function';
};
export var withCancellation = function withCancellation(fetch) {
return function (context, fetchContext, request) {
var value = fetch(context, fetchContext, request);
if (isAbortable(fetchContext) && isCancellable(value)) {
fetchContext.signal.addEventListener('abort', function () {
value.cancel();
});
}
return value;
};
};
// #sourceMappingURL=withCancellation.js.map