const { Observable, Subject } = require('rxjs');
const { signal } = require('realar');
const signalFromSubject = (subj) => { // valueFromSubject will be similar
const sig = signal();
subj.subscribe({ next: sig });
return sig;
}
const signalToSubject = (sig) => { // valueToSubject will be same
const subj = new Subject();
sig.to((v) => subj.next(v));
return subj;
}
const signalToObservable = (sig) => { // valueToObservable will be same
return new Observable(subscriber => {
sig.to((v) => subscriber.next(v));
});
}
// Examples
// make an instance of RxJS Subject
const subj = new Subject();
// make Realar signal from RxJS Subject
const sig = signalFromSubject(subj).to(v => console.log(`signal: ${v}`));
// make RxJS Subject from Realar signal
const sig_subj = signalToSubject(sig);
sig_subj.subscribe({ next: (v) => console.log(`signal subject: ${v}`) });
// make RxJS Observable from Realar signal
const sig_obs = signalToObservable(sig);
sig_obs.subscribe((v) => console.log(`signal observable: ${v}`));
// Try It
subj.next(10);
// console output:
// signal: 10
// signal subject: 10
// signal observable: 10