@lifaon/rx-js-light
Version:
Blazing fast Observables
48 lines (47 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.toPromise = void 0;
var is_abort_signal_1 = require("../../../../../misc/abortable/is/is-abort-signal.cjs");
var create_abort_error_1 = require("../../../../../misc/errors/abort-error/create-abort-error.cjs");
var create_event_listener_1 = require("../../../../../misc/event-listener/functions/create-event-listener.cjs");
var to_typed_event_target_1 = require("../../../../../misc/event-listener/functions/to-typed-event-target.cjs");
var async_unsubscribe_1 = require("../../../../../misc/helpers/async-unsubscribe.cjs");
function toPromise(subscribe, options) {
return new Promise(function (resolve, reject) {
var removeAbortEventListener;
if (options !== void 0 && (0, is_abort_signal_1.isAbortSignal)(options.signal)) {
var signal_1 = options.signal;
if (signal_1.aborted) {
return reject((0, create_abort_error_1.createAbortError)({
signal: signal_1
}));
} else {
removeAbortEventListener = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(signal_1), 'abort', function () {
_reject((0, create_abort_error_1.createAbortError)({
signal: signal_1
}));
});
}
}
var end = function () {
if (removeAbortEventListener !== void 0) {
removeAbortEventListener();
}
(0, async_unsubscribe_1.asyncUnsubscribe)(function () {
return unsubscribe;
});
};
var _resolve = function (value) {
end();
resolve(value);
};
var _reject = function (error) {
end();
reject(error);
};
var unsubscribe = subscribe(_resolve);
});
}
exports.toPromise = toPromise;