UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

76 lines (71 loc) 2.79 kB
var ReduceObservable = (function(__super__) { inherits(ReduceObservable, __super__); function ReduceObservable(source, acc, hasSeed, seed) { this.source = source; this.acc = acc; this.hasSeed = hasSeed; this.seed = seed; __super__.call(this); } ReduceObservable.prototype.subscribeCore = function(observer) { return this.source.subscribe(new InnerObserver(observer,this)); }; function InnerObserver(o, parent) { this.o = o; this.acc = parent.acc; this.hasSeed = parent.hasSeed; this.seed = parent.seed; this.hasAccumulation = false; this.result = null; this.hasValue = false; this.isStopped = false; } InnerObserver.prototype.onNext = function (x) { if (this.isStopped) { return; } !this.hasValue && (this.hasValue = true); if (this.hasAccumulation) { this.result = tryCatch(this.acc)(this.result, x); } else { this.result = this.hasSeed ? tryCatch(this.acc)(this.seed, x) : x; this.hasAccumulation = true; } if (this.result === errorObj) { this.o.onError(this.result.e); } }; InnerObserver.prototype.onError = function (e) { if (!this.isStopped) { this.isStopped = true; this.o.onError(e); } }; InnerObserver.prototype.onCompleted = function () { if (!this.isStopped) { this.isStopped = true; this.hasValue && this.o.onNext(this.result); !this.hasValue && this.hasSeed && this.o.onNext(this.seed); !this.hasValue && !this.hasSeed && this.o.onError(new EmptyError()); this.o.onCompleted(); } }; InnerObserver.prototype.dispose = function () { this.isStopped = true; }; InnerObserver.prototype.fail = function(e) { if (!this.isStopped) { this.isStopped = true; this.o.onError(e); return true; } return false; }; return ReduceObservable; }(ObservableBase)); /** * Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified seed value is used as the initial accumulator value. * For aggregation behavior with incremental intermediate results, see Observable.scan. * @param {Function} accumulator An accumulator function to be invoked on each element. * @param {Any} [seed] The initial accumulator value. * @returns {Observable} An observable sequence containing a single element with the final accumulator value. */ observableProto.reduce = function (accumulator) { var hasSeed = false; if (arguments.length === 2) { hasSeed = true; var seed = arguments[1]; } return new ReduceObservable(this, accumulator, hasSeed, seed); };