Observables with Streams
npm install --save observables-with-streams
The goal of this library is to implement observables making as much use of the platform as possible and being highly tree-shakeable.
<!DOCTYPE html> <button id="dec">-</button> <span id="counter">0</span> <button id="inc">+</button> <script type="module"> import * as ows from "observables-with-streams"; ows.merge( ows.fromEvent( document.querySelector("#dec") "click" ).pipeThrough(ows.map(() => -1)), ows.fromEvent( document.querySelector("#inc") "click" ).pipeThrough(ows.map(() => 1)) ) .pipeThrough( ows.scan((v0, v1) => v0 + v1, 0) ) .pipeTo( ows.subscribe( v => document.querySelector("#counter").textContent = v ) ); </script>
The (somewhat lacking) documentation for this library is hosted at https://observables-with-streams.surma.technology
While most browsers have partial support of streams in stable, this library makes heavy use of TransformStreams, which are currently not well supported. Until browsers catch up, I can recommend Mattias Buelens' web-streams-polyfill.
License Apache 2.0