0.5.1 • Published 5 months ago

sinai v0.5.1

Weekly downloads
54
License
MIT
Repository
github
Last release
5 months ago

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

0.4.4

5 months ago

0.4.1

5 months ago

0.5.0

5 months ago

0.4.3

5 months ago

0.5.1

5 months ago

0.4.2

5 months ago

0.4.0

5 months ago

0.3.0

5 months ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago