sinai

Class based state management for Vue
2,075 112
Install
npm install sinai
Latest Version:0.5.1
Vue:3
Older releases:2
License:MIT
Last Updated:Dec 28, 2023
Links: GitHub  ·  npm
Maintainer: ktsn

Sinai

Class based state management for Vue.

Examples

import {
  store as createStore,
  module,
  Getters,
  Mutations,
  Actions,
} from 'sinai'

// Declare the module state and its initial value
class CounterState {
  count = 0
}

// Declare getters
class CounterGetters extends Getters<CounterState>() {
  get half() {
    return this.state.count / 2
  }
}

// Declare mutations
class CounterMutations extends Mutations<CounterState>() {
  inc() {
    this.state.count += 1
  }

  dec() {
    this.state.count -= 1
  }
}

// Declare actions
class CounterActions extends Actions<
  CounterState,
  CounterGetters,
  CounterMutations
>() {
  asyncInc(ms: number) {
    console.log('count: ' + this.state.count)
    console.log('half: ' + this.getters.half)

    return new Promise((resolve) => {
      setTimeout(() => {
        this.mutations.inc()
        resolve()
      }, ms)
    })
  }
}

// Create module by composing state/getters/mutations/actions
const counter = module({
  state: CounterState,
  getters: CounterGetters,
  mutations: CounterMutations,
  actions: CounterActions,
})

// Create root module
const root = module().child('counter', counter)

// Create store
const store = createStore(root, {
  strict: process.env.NODE_ENV !== 'production',
})

// These will be all type checked
console.log(store.state.counter.count)
console.log(store.getters.counter.half)
store.actions.counter.asyncInc(1000)
store.mutations.counter.inc()

For other examples, see tests.

License

MIT

Related Packages

reapex

A framework to build React application

472,900 57
vue-class-store

Universal Vue stores you write once and use anywhere

3,987 276
@wlard/vue-class-store

Universal Vue stores you write once and use anywhere

2,054 276
vuex-composition-helpers

Helpers to use Vuex store form Vue Composition API

541,700 288
@persevie/statemanjs-vue

Vue wrap over proper state manager for JavaScript

27,735 59

Version History

Version Released Vue License
0.5.1 ^3.3.13 MIT
0.5.0 ^3.3.13 MIT
0.4.4 ^3.3.13 MIT
0.4.3 ^3.3.13 MIT
0.4.2 ^3.3.13 MIT