@peter.naydenov/fsm 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +2 -0
  2. package/coverage/lcov-report/index.html +19 -19
  3. package/coverage/lcov-report/src/index.html +7 -7
  4. package/coverage/lcov-report/src/index.js.html +12 -18
  5. package/coverage/lcov-report/src/methods/_getChain.js.html +1 -1
  6. package/coverage/lcov-report/src/methods/_onUpdateTask.js.html +1 -1
  7. package/coverage/lcov-report/src/methods/_setTransitions.js.html +1 -1
  8. package/coverage/lcov-report/src/methods/_transit.js.html +2 -2
  9. package/coverage/lcov-report/src/methods/_triggerCacheUpdate.js.html +1 -1
  10. package/coverage/lcov-report/src/methods/_updateStep.js.html +1 -1
  11. package/coverage/lcov-report/src/methods/_warn.js.html +9 -18
  12. package/coverage/lcov-report/src/methods/exportState.js.html +2 -2
  13. package/coverage/lcov-report/src/methods/getState.js.html +1 -1
  14. package/coverage/lcov-report/src/methods/ignoreCacheUpdates.js.html +1 -1
  15. package/coverage/lcov-report/src/methods/importState.js.html +10 -7
  16. package/coverage/lcov-report/src/methods/index.html +18 -18
  17. package/coverage/lcov-report/src/methods/index.js.html +1 -1
  18. package/coverage/lcov-report/src/methods/off.js.html +1 -1
  19. package/coverage/lcov-report/src/methods/on.js.html +1 -1
  20. package/coverage/lcov-report/src/methods/reset.js.html +9 -6
  21. package/coverage/lcov-report/src/methods/setDependencies.js.html +1 -1
  22. package/coverage/lcov-report/src/methods/update.js.html +1 -1
  23. package/coverage/lcov.info +23 -27
  24. package/coverage/tmp/{coverage-25644-1668538233889-0.json → coverage-29775-1668580484020-0.json} +1 -1
  25. package/package.json +2 -2
  26. package/src/index.js +5 -7
  27. package/src/methods/_transit.js +1 -1
  28. package/src/methods/_warn.js +3 -6
  29. package/src/methods/exportState.js +1 -1
  30. package/src/methods/importState.js +4 -3
  31. package/src/methods/reset.js +2 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peter.naydenov/fsm",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "Simple Finite State Machine",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -11,7 +11,7 @@
11
11
  "author": "Peter Naydenov",
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
- "@peter.naydenov/walk": "3.0.1",
14
+ "@peter.naydenov/walk": "4.0.0",
15
15
  "ask-for-promise": "1.3.1"
16
16
  },
17
17
  "devDependencies": {
package/src/index.js CHANGED
@@ -12,10 +12,9 @@ function Fsm ({init, table, stateData, debug }, lib={} ) {
12
12
  fsm.lock = false // switch 'ON' during transition in progress. Write other updates in cache.
13
13
  fsm.cache = [] // cached 'update' commands
14
14
  fsm.askForPromise = askForPromise
15
- fsm.___walk = walk
16
15
 
17
- fsm.stateData = walk ({ data:stateData })
18
- fsm.initialStateData = walk ({ data:stateData })
16
+ fsm.stateData = { ...stateData }
17
+ fsm.initialStateData = Object.freeze ({ ...stateData })
19
18
  fsm.dependencies = { walk, askForPromise }
20
19
  fsm.callback = {
21
20
  update : []
@@ -24,10 +23,9 @@ function Fsm ({init, table, stateData, debug }, lib={} ) {
24
23
  , negative : []
25
24
  }
26
25
 
27
- walk ({ // Attach methods to fsm
28
- data:methods
29
- , keyCallback : ({key:k}) => fsm[k] = methods[k](fsm)
30
- })
26
+ for ( let k in methods ) {
27
+ fsm[k] = methods[k](fsm)
28
+ }
31
29
 
32
30
  const {transitions, nextState, chainActions } = fsm._setTransitions ( table, lib );
33
31
  if ( debug ) fsm._warn ( transitions )
@@ -3,7 +3,7 @@ return function ( task, key, dt ) { // ( promiseObj, transitionKey, addition
3
3
  // *** Execute transition if exists. Ignore all non-predefined cases
4
4
  const
5
5
  dependencies = fsm.dependencies
6
- , stateData = fsm.___walk ({ data:fsm.stateData })
6
+ , stateData = { ...fsm.stateData }
7
7
  , transition = fsm.transitions [ key ]
8
8
  ;
9
9
  if ( typeof transition === 'function' ) transition ( task, dependencies, stateData, dt )
@@ -1,12 +1,9 @@
1
1
  function _warn ( fsm ) {
2
2
  return function ( transitions ) {
3
3
  // *** Warn if transition function used in description table is not defined.
4
- fsm.___walk ({
5
- data : transitions
6
- , keyCallback : (v,k) => {
7
- if ( v == null ) console.log ( `Warning: Transition for ${k} is not defined` )
8
- }
9
- })
4
+ Object.entries ( transitions ).forEach ( ([v,k]) => {
5
+ if ( v == null ) console.log ( `Warning: Transition for ${k} is not defined` )
6
+ })
10
7
  }} // warn func.
11
8
 
12
9
 
@@ -3,7 +3,7 @@ return function () {
3
3
  // *** Export internal flags and state as an object
4
4
  const
5
5
  state = fsm.state
6
- , stateData = fsm.___walk ({ data : fsm.stateData })
6
+ , stateData = { ...fsm.stateData }
7
7
  ;
8
8
  return {
9
9
  state
@@ -1,10 +1,11 @@
1
1
  function importState (fsm) {
2
- return function ( {state, stateData} ) {
2
+ return function ( {state, stateData } ) {
3
3
  // *** Import existing state to fsm
4
4
  if ( state ) {
5
5
  fsm.state = state
6
- fsm.stateData = fsm.___walk ({ data : stateData })
7
- // TODO: test if stateData exist ??!
6
+ if ( stateData ) {
7
+ fsm.stateData = { ...stateData }
8
+ }
8
9
  }
9
10
  }} // importState func.
10
11
 
@@ -1,7 +1,8 @@
1
1
  function reset ( fsm ) {
2
2
  return function () {
3
3
  fsm.state = fsm.initialState
4
- fsm.stateData = fsm.___walk ({ data : fsm.initialStateData })
4
+ fsm.stateData = {}
5
+ Object.entries ( fsm.initialStateData ).forEach ( ([key,value]) => fsm.stateData[key] = value )
5
6
  }} // reset func.
6
7
 
7
8