rx-observable-state
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

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

name value
state S
state$ Observable<S>

Methods

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

name parameters returns description
setState state S void Completely replace the current state
patch value ?, ...path ? The accessor path to the property you want to update void Update the value at a specific position of the state
on ...path ? The accessor path to the property you want to subscribe to changes to Observable<?> 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
dispatch dispatcher S The name of the dispatcher, ...args ?[] Whatever arguments have to be passed to the dispatcher Observable<S> Dispatch an action which in turn will update the state. Returns the updated state
select selector ? The name of the selector Observable<?> Select parts of the state with the name of a selector. Will update
selectCurrent selector ? The name of the selector ? Get the current value of a selector

Package Sidebar

Install

npm i rx-observable-state

Weekly Downloads

6

Version

1.0.2

License

MIT

Unpacked Size

1.43 MB

Total Files

49

Last publish

Collaborators

  • huiibuh