import { Observable as ObservableT, Subscription } from './index' import Observable from './observable' /** * Create an observable that skips the first {@link count} values. * * {@link skip} takes a count, and a source `Observable`. The returned `Observable` will only emit `T`s after * the source `Observable` has emitted count times. Any values the source `Observable` emits before count is * reached will be discarded. * * @example Marble diagram skipping 3 values * * // source s: |--1--2--3--4--5--6--7--| * // skip(s, 3): |-----------4--5--6--7--| * * @param {ObservableT} source the source observable * @param {number} count positive count to skip * * @returns {ObservableT} the new observable that skips the first count values */ export default function skip( source: ObservableT, count: number ): ObservableT { return new Observable( ({ complete, error, next }): Subscription => { return source.subscribe({ complete, error, next: (value): void => { if (count === 0) { return next(value) } count -= 1 } }) } ) }