UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

84 lines (79 loc) 2.77 kB
var ScanObservable = (function(__super__) { inherits(ScanObservable, __super__); function ScanObservable(source, accumulator, hasSeed, seed) { this.source = source; this.accumulator = accumulator; this.hasSeed = hasSeed; this.seed = seed; __super__.call(this); } ScanObservable.prototype.subscribeCore = function(observer) { return this.source.subscribe(new ScanObserver(observer,this)); }; return ScanObservable; }(ObservableBase)); function ScanObserver(observer, parent) { this.observer = observer; this.accumulator = parent.accumulator; this.hasSeed = parent.hasSeed; this.seed = parent.seed; this.hasAccumulation = false; this.accumulation = null; this.hasValue = false; this.isStopped = false; } ScanObserver.prototype.onNext = function (x) { if (this.isStopped) { return; } !this.hasValue && (this.hasValue = true); try { if (this.hasAccumulation) { this.accumulation = this.accumulator(this.accumulation, x); } else { this.accumulation = this.hasSeed ? this.accumulator(this.seed, x) : x; this.hasAccumulation = true; } } catch (e) { return this.observer.onError(e); } this.observer.onNext(this.accumulation); }; ScanObserver.prototype.onError = function (e) { if (!this.isStopped) { this.isStopped = true; this.observer.onError(e); } }; ScanObserver.prototype.onCompleted = function () { if (!this.isStopped) { this.isStopped = true; !this.hasValue && this.hasSeed && this.observer.onNext(this.seed); this.observer.onCompleted(); } }; ScanObserver.prototype.dispose = function() { this.isStopped = true; }; ScanObserver.prototype.fail = function (e) { if (!this.isStopped) { this.isStopped = true; this.observer.onError(e); return true; } return false; }; /** * Applies an accumulator function over an observable sequence and returns each intermediate result. The optional seed value is used as the initial accumulator value. * For aggregation behavior with no intermediate results, see Observable.aggregate. * @param {Mixed} [seed] The initial accumulator value. * @param {Function} accumulator An accumulator function to be invoked on each element. * @returns {Observable} An observable sequence containing the accumulated values. */ observableProto.scan = function () { var hasSeed = false, seed, accumulator, source = this; if (arguments.length === 2) { hasSeed = true; seed = arguments[0]; accumulator = arguments[1]; } else { accumulator = arguments[0]; } return new ScanObservable(this, accumulator, hasSeed, seed); };