Sonic

Installing
npm install sonic.ts
Examples
Map and print a state, asynchronously.
import { State } from 'sonic.ts';
const log = console.log.bind(console);
var state = State.fromArray([1,2,3]);
var mapped = State.map(state, value => {
return Promise.resolve(value * 2);
});
State.toArray(mapped).then(log);
Convert iterables over space and time.
import { AsyncIterator, State, Observable } from 'sonic.ts'
const log = console.log.bind(console);
var it = AsyncIterator.fromObject({a: 1, b: 2});
var state = State.fromEntries(it);
var observable = Observable.fromIterator(it);
AsyncIterator.toArray(it).then(log);
AsyncIterator.toArray(State.entries(state)).then(log);
AsyncIterator.toArray(Observable.toIterator(observable)).then(log);
Create reactive stores
import { AsyncIterator, State, Store, Observable, Patch } from 'sonic.ts'
var log = console.log.bind(console);
var state = State.fromObject({a: 3, b: 4, c: 5});
var subject = Subject.create();
var store = Store.create(state, subject);
var scanned = Store.scan(store, (x, y) => x + y, 0);
State.toObject(scanned.state)
.then(log)
.then(() => {
return store.dispatcher.onNext(Patch.set(6, 'b')).then(() => {
return State.toObject(scanned.state).then(log);
});
});
scanned.dispatcher.subscribe({
onNext: log
});