Have ideas to improve npm?Join in the discussion! »

    small-store
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    🗃 Small Store

    npm Package Version Package Dependencies Coveralls github GitHub Workflow Status (branch) GitHub Repo License MIT

    A small, immutable, reactive and framework agnostic state store under 2KB powered by rxjs and immer with native typescript support. To be used with vanilla, react, preact, angular, vue or whatever you like.


    Quick Start

    import { Actions, Store } from 'small-store';
    
    // state declaration
    interface CounterState {
      count: number;
    }
    
    // actions
    enum CounterAction {
      Increment = 'increment',
      Decrement = 'decrement'
    }
    
    // action functions
    const counterActions: Actions<CounterState, CounterAction> = {
      [CounterAction.Increment]: () => state => {
        state.count++;
        return state;
      },
      [CounterAction.Decrement]: () => state => {
        state.count--;
        return state;
      }
    };
    
    // the initial state
    const initialCounterState: CounterState = {
      count: 0
    };
    
    // creating the store
    const counterStore = new Store<CounterState, CounterAction>(initialCounterState, counterActions);
    
    // subscribing to the store's state
    counterStore.state$.subscribe(state => console.log(state));
    
    // dispatching actions
    counterStore.dispatch(CounterAction.Increment);
    counterStore.dispatch(CounterAction.Increment);
    counterStore.dispatch(CounterAction.Decrement);

    See details and more examples in the docs.

    Documentation

    Visit simbo.codes/small-store to read the documentation and the examples.

    Development

    Requirements: node.js >=14, yarn >=1.22

    # build using microbundle
    yarn build
    # watch and rebuild
    yarn build:watch
    # lint using prettier and eslint
    yarn lint
    # test using jest
    yarn test
    # watch and retest
    yarn test:watch
    # open coverage in default browser
    yarn coverage:open
    # check everything
    yarn preflight

    Docs

    Requirements: docker

    # pull slate image
    docker pull slatedocs/slate
    # serve docs on localhost:4567
    yarn docs:serve
    # build docs to ./docs-build
    yarn docs:build

    License and Author

    MIT © Simon Lepel

    Install

    npm i small-store

    DownloadsWeekly Downloads

    10

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    40.3 kB

    Total Files

    12

    Last publish

    Collaborators

    • avatar