2.3.3 • Published 12 months ago

@geut/staty v2.3.3

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

staty

Build a proxy-state from plain objects. With automatic rollback to previous state in case of errors.

Test Status Coverage JavaScript Style Guide standard-readme compliant

Made by GEUT

Install

$ npm install @geut/staty

Usage

import { staty, subscribe, snapshot, action } from '@geut/staty'

const state = staty({
  count: 0
})

console.log(snapshot(state)) // => { count: 0 }

subscribe(state, () => {
  console.log(state) // => { count: 1 }
})

subscribe(state, () => {
  console.log(state.count) // => 1
}, { props: 'count' })

// filter multiple values
subscribe(state, () => {
  console.log(state.count) // => 1
}, { props: ['count'] })

state.count++

try {
  action(() => {
    state.count = 100
    throw new Error('ups')
  })
} catch (err) {
  console.log(err) // => ups
}

// rollback to the last good state and subscriptions won't be trigger it
state.count // => 1

API

staty(target, opts?) => any

Creates a new proxy-state

  • target: any
  • opts?: Object = {}
    • onReadOnly?: (target: any, prop: any, value: any) => {} global handle for readonly snapshot errors
    • onAction?: (state: Proxy, actionName: any) => {} global subscription to run before every action. Create a state is also an action so it will run on every staty({}) call.

listeners(state) => ListenersReport

Get subscription listeners count

  • state: any

subscribe(state, handler, opts?) => UnsubscribeFunction

Subscribe for changes in the state

  • state: any
  • handler: () => void
  • opts?: Object = {}
    • props?: string | string[] props to subscribe
    • filter?: (actionName: string) => boolean subscribe only for specific action names
    • batch?: boolean = false execute in batch turning the subscription into async. Required before=false
    • autorun?: boolean run immediately. Required before=false
    • before?: boolean run before the other subscriptions and after the action finish. Good place to validate your state. Required batch=false && autorun=false

ref(value, mapSnapshot?, cache?) => any

Add a ref to another object

  • value: any
  • mapSnapshot?: (ref: any) => any
  • cache?: boolean = false enable cache for snapshots

action(handler, actionName) => void

Create a action

  • handler: Function
  • actionName: string

snapshot(state, prop?) => any

Creates a snapshot of the state

  • state: any
  • prop?: (string | Array<string>)

Issues

:bug: If you found an issue we encourage you to report it on github. Please specify your OS and the actions to reproduce it.

Contributing

:busts_in_silhouette: Ideas and contributions to the project are welcome. You must follow this guideline.

License

MIT © A GEUT project

2.3.2

12 months ago

2.3.1

12 months ago

2.3.3

12 months ago

2.2.0

2 years ago

2.3.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.0.47

2 years ago

0.0.46

2 years ago

0.0.40

2 years ago

0.0.41

2 years ago

0.0.42

2 years ago

0.0.43

2 years ago

0.0.44

2 years ago

0.0.45

2 years ago

0.0.37

2 years ago

0.0.38

2 years ago

0.0.39

2 years ago

0.0.30

2 years ago

0.0.31

2 years ago

0.0.32

2 years ago

0.0.33

2 years ago

0.0.34

2 years ago

0.0.35

2 years ago

0.0.36

2 years ago

0.0.29

2 years ago

0.0.25

2 years ago

0.0.26

2 years ago

0.0.27

2 years ago

0.0.28

2 years ago

0.0.20

2 years ago

0.0.21

2 years ago

0.0.22

2 years ago

0.0.23

2 years ago

0.0.24

2 years ago

0.0.19

3 years ago

0.0.18

3 years ago

0.0.17

3 years ago

0.0.15

3 years ago

0.0.16

3 years ago

0.0.12

3 years ago

0.0.13

3 years ago

0.0.14

3 years ago

0.0.11

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.5

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.3

3 years ago

0.0.4

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago