UNPKG

@tempest/subject

Version:

subject operator for tempest

39 lines 986 B
import { Stream, defaultScheduler, PropagateTask } from '@tempest/core'; /** * Takes a Stream and 'upgrades' it to a Subject * * @export * @template T * @param {Stream<T>} stream * @returns {Subject<T>} * @example * import { never } from '@tempest/never' * import { asSubject } from '@tempest/subject' * * const subject = asSubject(never()) * * subject.subscribe(x => console.log(x)) // 1, 2, 3 * * subject.next(1) * subject.next(2) * subject.next(3) * subject.complete() */ export function asSubject(stream) { return new Subject(stream.source); } export class Subject extends Stream { constructor(source) { super(source); } next(value) { defaultScheduler.asap(PropagateTask.event(value, this.source)); } error(err) { defaultScheduler.asap(PropagateTask.error(err, this.source)); } complete(value) { defaultScheduler.asap(PropagateTask.end(value, this.source)); } } //# sourceMappingURL=index.js.map