@tempest/subject
Version:
subject operator for tempest
39 lines • 986 B
JavaScript
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