1.0.2 • Published 2 years ago

rx-observable-state v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Rx Observable State

codecov NPM package

Features

  • Minimal overhead and size
  • Completely type-save, even if you access the state 'only' with strings
  • Very minimal and easy to learn API
  • Pass your own (optional) dispatchers
  • Pass your own (optional) selectors
  • Autocomplete/Error everything (even strings)

Example

For a more advanced example take a look at the example.ts.

interface Todo {
  id: TodoId;
  done: boolean;
  contents: any;
  shared: any;
}

interface TodoState {
  selectedTodo: Todo | null;
  todo: Record<TodoId, Todo>;
  username: string | null;
  allDone: boolean;
}

const store = new Store<TodoState>(
  // The initial state
  { todo: {}, selectedTodo: null, username: null, allDone: false },
);

// Logs the username every time the username changes
store.on('username').subscribe(console.log)

// Change the username
store.patch('huiibuh', 'username');

API

Properties

namevalue
stateS
state$Observable<S>

Methods

? stands for values which are infered. These values are typesave!

nameparametersreturnsdescription
setStatestate SvoidCompletely replace the current state
patchvalue ?, ...path ? The accessor path to the property you want to updatevoidUpdate the value at a specific position of the state
on...path ? The accessor path to the property you want to subscribe to changes toObservable<?>Get an observable which notifies you whenever the value behind the path changes
get...path ? The accessor path to the property you want to get?The the value at a specific path. undefined if the path does not exist
dispatchdispatcher S The name of the dispatcher, ...args ?[] Whatever arguments have to be passed to the dispatcherObservable<S>Dispatch an action which in turn will update the state. Returns the updated state
selectselector ? The name of the selectorObservable<?>Select parts of the state with the name of a selector. Will update
selectCurrentselector ? The name of the selector?Get the current value of a selector