@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
49 lines (48 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkAbortSignal = checkAbortSignal;
exports.abortBreakPoint = abortBreakPoint;
exports.makeAbortError = makeAbortError;
exports.observeAbortSignal = observeAbortSignal;
exports.isAbortException = isAbortException;
const rxjs_1 = require("rxjs");
class AbortError extends Error {
}
function checkAbortSignal(signal) {
if (!signal) {
return;
}
if (!(signal instanceof AbortSignal)) {
throw new TypeError('must pass an AbortSignal');
}
if (signal.aborted) {
throw makeAbortError();
}
}
function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function abortBreakPoint(signal) {
await timeout(1);
checkAbortSignal(signal);
}
function makeAbortError() {
if (typeof DOMException !== 'undefined') {
return new DOMException('aborted', 'AbortError');
}
const e = new AbortError('aborted');
e.code = 'ERR_ABORTED';
return e;
}
function observeAbortSignal(signal) {
if (!signal) {
return new rxjs_1.Observable();
}
return (0, rxjs_1.fromEvent)(signal, 'abort');
}
function isAbortException(exception) {
return (exception instanceof Error &&
(exception.name === 'AbortError' ||
exception.code === 'ERR_ABORTED' ||
!!/\b(aborted|aborterror)\b/i.test(exception.message)));
}