import { Observer } from 'rxjs' import { Observable } from '../core/Observable' import { Subscribable } from '../core/types.h' import { transform } from '../helpers/transform' const skipLastFn = (count: number) => { const values: T[] = new Array(count) return (observer: Observer, value: T, index: number) => { if (index < count) { values[index] = value } else { const currentIndex = index % count const oldValue = values[currentIndex] values[currentIndex] = value observer.next(oldValue) } } } export const skipLast = (count: number, stream: Subscribable): Observable => { if (count < 1) { return stream as Observable } return transform(stream, skipLastFn(count)) }