UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

77 lines (76 loc) 3.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromPromiseFactory = void 0; var is_abort_signal_1 = require("../../../../../../misc/abortable/is/is-abort-signal.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 noop_1 = require("../../../../../../misc/helpers/noop.cjs"); var complete_notification_constant_1 = require("../../../../../../misc/notifications/built-in/complete/complete-notification.constant.cjs"); var create_error_notification_1 = require("../../../../../../misc/notifications/built-in/error/create-error-notification.cjs"); var create_abort_error_notification_1 = require("../../../../../../misc/notifications/built-in/error/derived/create-abort-error-notification.cjs"); var create_next_notification_1 = require("../../../../../../misc/notifications/built-in/next/create-next-notification.cjs"); function fromPromiseFactory(createPromise, options) { var signal = options !== void 0 && (0, is_abort_signal_1.isAbortSignal)(options.signal) ? options.signal : null; return function (emit) { if (signal !== null && signal.aborted) { emit((0, create_abort_error_notification_1.createAbortErrorNotification)({ signal: signal })); return noop_1.noop; } else { var running_1 = true; var abortController_1 = new AbortController(); var end_1 = function () { running_1 = false; if (removeAbortEventListener_1 !== void 0) { removeAbortEventListener_1(); } }; var next_1 = function (value) { if (running_1) { emit((0, create_next_notification_1.createNextNotification)(value)); } }; var complete_1 = function () { if (running_1) { end_1(); emit(complete_notification_constant_1.STATIC_COMPLETE_NOTIFICATION); } }; var error = function (error) { if (running_1) { end_1(); emit((0, create_error_notification_1.createErrorNotification)(error)); } }; var abort_1 = function () { if (running_1) { end_1(); emit((0, create_abort_error_notification_1.createAbortErrorNotification)({ signal: signal })); } }; var removeAbortEventListener_1; if (signal !== null) { removeAbortEventListener_1 = (0, create_event_listener_1.createEventListener)((0, to_typed_event_target_1.toTypedEventTarget)(signal), 'abort', function () { abort_1(); abortController_1.abort(); }); } createPromise(abortController_1.signal).then(function (value) { next_1(value); complete_1(); }, error); return function () { if (running_1) { end_1(); abortController_1.abort(); } }; } }; } exports.fromPromiseFactory = fromPromiseFactory;