import { Observable as ObservableT, Subscription } from './index' import Observable from './observable' // source: |-----1--2--3--4--5--6--| // startWith(s, 1): |--1--1--2--3--4--5--6--| /** * Creates an observable from the source prepended with a single value * * {@link startWith} takes an initial value `T` and a source `Observable` and returns an ouput `Observable`, * which immediately emits `T`, subsequently emitting any `U`s coming from `Observable`. * * @example Marble diagram prepending the value 9 * * // source: |-----1--2--3--4--5--6--| * // startWith(s, 9): |--9--1--2--3--4--5--6--| * * @param {ObservableT} source source observable * @param {T} start the value to prepend * * @returns {ObservableT} the observabe that outputs start and then subscribes to source */ export default function startWith( source: ObservableT, start: T ): ObservableT export default function startWith( source: ObservableT, start: T ): ObservableT { return new Observable( ({ error, next, complete }): Subscription => { next(start) return source.subscribe({ error, next, complete }) } ) }