K-Observable

This is a basic observable implementation to hold data and get notified whenever it changes.
Inspired by the well-known KnockoutJS observable objects, but without any other magic (like bindings or dependency tracking). Just observables and subscriptions.
Observable
The most basic unit: you can store and retrieve data from them.
import observable from 'kobservable';
const name = observable('');
name.subscribe(newName => console.log(`The new name is '${newName)}'`);
name('foo');
name();
Computed
Given a number of observables, you can perform some aggregation conversion and get it like another read-only observable.
import observable, {computed} from 'kobservable';
const user = observable('me');
const password = observable('me too');
const canSubmit = computed([user, password], ([user, password]) => Boolean(user && password));
const mySubmitButton = document.querySelector('#submit');
canSubmit.subscribe(can => mySubmitButton.disabled = !can);
user('');
password('');
user('me');
password('me again');
Powered by TypeScript
If your IDE has TypeScript running (with a plugin, see more at https://www.typescriptlang.org/), you can:
- Code in JavaScript and see how your IDE autocompletes all the K-Observable usages, with type inferences and so on. You can see an example under the test folder.
- Code in TypeScript and... you know, TypeScript!
Compile
npm install
Test
npm test