import { __read, __spreadArray } from "tslib"; import { isScheduler } from '../util/isScheduler'; import { Observable } from '../Observable'; import { subscribeOn } from '../operators/subscribeOn'; import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs'; import { observeOn } from '../operators/observeOn'; import { AsyncSubject } from '../AsyncSubject'; export function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) { if (resultSelector) { if (isScheduler(resultSelector)) { scheduler = resultSelector; } else { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler) .apply(this, args) .pipe(mapOneOrManyArgs(resultSelector)); }; } } if (scheduler) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return bindCallbackInternals(isNodeStyle, callbackFunc) .apply(this, args) .pipe(subscribeOn(scheduler), observeOn(scheduler)); }; } return function () { var _this = this; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var subject = new AsyncSubject(); var uninitialized = true; return new Observable(function (subscriber) { var subs = subject.subscribe(subscriber); if (uninitialized) { uninitialized = false; var isAsync_1 = false; var isComplete_1 = false; callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [ function () { var results = []; for (var _i = 0; _i < arguments.length; _i++) { results[_i] = arguments[_i]; } if (isNodeStyle) { var err = results.shift(); if (err != null) { subject.error(err); return; } } subject.next(1 < results.length ? results : results[0]); isComplete_1 = true; if (isAsync_1) { subject.complete(); } }, ])); if (isComplete_1) { subject.complete(); } isAsync_1 = true; } return subs; }); }; } //# sourceMappingURL=bindCallbackInternals.js.map