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