UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

50 lines (49 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toPromiseLast = 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"); var notifications_to_last_value_observable_1 = require("../../../../../pipes/built-in/with-notifications/others/notifications-to-values/derived/notifications-to-last-value/notifications-to-last-value-observable.cjs"); function toPromiseLast(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 _subscribe = (0, notifications_to_last_value_observable_1.notificationsToLastValueObservable)(subscribe, _reject); var unsubscribe = _subscribe(_resolve); }); } exports.toPromiseLast = toPromiseLast;