UNPKG

@gravity-ui/data-source

Version:
26 lines (25 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.withCancellation = exports.isCancellable = exports.isAbortable = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var isCancellable = exports.isCancellable = function isCancellable(value) { return (0, _typeof2.default)(value) === 'object' && value !== null && 'cancel' in value && typeof value.cancel === 'function'; }; var isAbortable = exports.isAbortable = function isAbortable(value) { return (0, _typeof2.default)(value) === 'object' && value !== null && 'signal' in value && (0, _typeof2.default)(value.signal) === 'object' && value.signal !== null && 'addEventListener' in value.signal && typeof value.signal.addEventListener === 'function'; }; var withCancellation = exports.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