"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.raceInit = exports.race = void 0; var Observable_1 = require("../Observable"); var innerFrom_1 = require("./innerFrom"); var argsOrArgArray_1 = require("../util/argsOrArgArray"); var OperatorSubscriber_1 = require("../operators/OperatorSubscriber"); function race() { var sources = []; for (var _i = 0; _i < arguments.length; _i++) { sources[_i] = arguments[_i]; } sources = argsOrArgArray_1.argsOrArgArray(sources); return sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : new Observable_1.Observable(raceInit(sources)); } exports.race = race; function raceInit(sources) { return function (subscriber) { var subscriptions = []; var _loop_1 = function (i) { subscriptions.push(innerFrom_1.innerFrom(sources[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { if (subscriptions) { for (var s = 0; s < subscriptions.length; s++) { s !== i && subscriptions[s].unsubscribe(); } subscriptions = null; } subscriber.next(value); }))); }; for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) { _loop_1(i); } }; } exports.raceInit = raceInit; //# sourceMappingURL=race.js.map