@lifaon/rx-js-light
Version:
Blazing fast Observables
66 lines (65 loc) • 2.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.wrapPromiseWithAbortSignal = exports.wrapPromiseFactoryWithAbortSignal = exports.abortSignalPromiseBranching = exports.awaitPromiseWithAbortSignal = exports.awaitPromiseFactoryWithAbortSignal = void 0;
var create_event_listener_1 = require("../../event-listener/__old/create-event-listener.cjs");
var to_typed_event_target_1 = require("../../event-listener/__old/to-typed-event-target.cjs");
var create_abort_error_1 = require("../../errors/abort-error/create-abort-error.cjs");
var default_aborted_promise_factory_constant_1 = require("../default-aborted-promise-factory.constant.cjs");
function awaitPromiseFactoryWithAbortSignal(promiseFactory, signal, onFulfilled, onRejected, onAborted) {
if (signal.aborted) {
onAborted();
} else {
var running_1 = true;
var end_1 = function () {
running_1 = false;
removeAbortEventListener_1();
};
var removeAbortEventListener_1 = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(signal), 'abort', function () {
end_1();
onAborted();
});
promiseFactory(signal).then(function (value) {
if (running_1) {
end_1();
onFulfilled(value);
}
}, function (error) {
if (running_1) {
end_1();
onRejected(error);
}
});
}
}
exports.awaitPromiseFactoryWithAbortSignal = awaitPromiseFactoryWithAbortSignal;
function awaitPromiseWithAbortSignal(promise, signal, onFulfilled, onRejected, onAborted) {
return awaitPromiseFactoryWithAbortSignal(function () {
return promise;
}, signal, onFulfilled, onRejected, onAborted);
}
exports.awaitPromiseWithAbortSignal = awaitPromiseWithAbortSignal;
function abortSignalPromiseBranching(signal, promiseFactoryNotAborted, promiseFactoryAborted) {
if (promiseFactoryAborted === void 0) {
promiseFactoryAborted = default_aborted_promise_factory_constant_1.DEFAULT_ABORTED_PROMISE_FACTORY;
}
return signal.aborted ? promiseFactoryAborted(signal) : promiseFactoryNotAborted(signal);
}
exports.abortSignalPromiseBranching = abortSignalPromiseBranching;
function wrapPromiseFactoryWithAbortSignal(promiseFactory, signal) {
return new Promise(function (resolve, reject) {
awaitPromiseFactoryWithAbortSignal(promiseFactory, signal, resolve, reject, function () {
return reject((0, create_abort_error_1.createAbortError)({
signal: signal
}));
});
});
}
exports.wrapPromiseFactoryWithAbortSignal = wrapPromiseFactoryWithAbortSignal;
function wrapPromiseWithAbortSignal(promise, signal) {
return wrapPromiseFactoryWithAbortSignal(function () {
return promise;
}, signal);
}
exports.wrapPromiseWithAbortSignal = wrapPromiseWithAbortSignal;