| import { Subscriber } from '../Subscriber'; | 
| import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError'; | 
| export function skipLast(count) { | 
|     return (source) => source.lift(new SkipLastOperator(count)); | 
| } | 
| class SkipLastOperator { | 
|     constructor(_skipCount) { | 
|         this._skipCount = _skipCount; | 
|         if (this._skipCount < 0) { | 
|             throw new ArgumentOutOfRangeError; | 
|         } | 
|     } | 
|     call(subscriber, source) { | 
|         if (this._skipCount === 0) { | 
|             return source.subscribe(new Subscriber(subscriber)); | 
|         } | 
|         else { | 
|             return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount)); | 
|         } | 
|     } | 
| } | 
| class SkipLastSubscriber extends Subscriber { | 
|     constructor(destination, _skipCount) { | 
|         super(destination); | 
|         this._skipCount = _skipCount; | 
|         this._count = 0; | 
|         this._ring = new Array(_skipCount); | 
|     } | 
|     _next(value) { | 
|         const skipCount = this._skipCount; | 
|         const count = this._count++; | 
|         if (count < skipCount) { | 
|             this._ring[count] = value; | 
|         } | 
|         else { | 
|             const currentIndex = count % skipCount; | 
|             const ring = this._ring; | 
|             const oldValue = ring[currentIndex]; | 
|             ring[currentIndex] = value; | 
|             this.destination.next(oldValue); | 
|         } | 
|     } | 
| } | 
| //# sourceMappingURL=skipLast.js.map |