UNPKG

@thi.ng/rstream

Version:

Reactive streams & subscription primitives for constructing dataflow graphs / pipelines

33 lines (32 loc) 772 B
import { State } from "./api.js"; import { ASidechain } from "./asidechain.js"; import { __optsWithID } from "./idgen.js"; const sidechainToggle = (src, side, opts) => src.subscribe(new SidechainToggle(side, opts)); class SidechainToggle extends ASidechain { isActive; constructor(side, opts) { opts = __optsWithID("sidetoggle", opts); super(opts); this.isActive = !!opts.initial; const pred = opts.pred || (() => true); this.sideSub = side.subscribe({ next: (x) => { if (pred(x)) { this.isActive = !this.isActive; } }, done: () => this.done() }); } next(x) { if (this.isActive && this.state < State.DONE) { super.next(x); } } } export { SidechainToggle, sidechainToggle };