const{ValuePort}=require('piport');classPassiveSender{constructor(){// create a port for sender out values passively (no known receiver)this.value$=newValuePort().next(0);}increment(){letn=0;// connect to value port, get the value and immediately disconnectthis.value$.connect(i=>n=i+1)();// send new valuethis.value$.next(n);}}classActiveReceiver{constructor(foo){// actively receive value from foo and transform the value by x2this.bar$=foo.value$.build(src=>src.map(x=>2*x));// listen to the value, and immediately receive the current onethis.bar$.connect(v=>{console.log('bar receive',v);})}}// create instancesletsender=newPassiveSender();letreceiver=newActiveReceiver(sender);// sender perform some actions, and receiver receive value automaticallysender.increment();sender.increment();sender.increment();/*output:bar receive 0bar receive 2bar receive 4bar receive 6 */