@lifaon/rx-js-light
Version:
Blazing fast Observables
50 lines (49 loc) • 2.15 kB
JavaScript
;
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;