@peter.naydenov/fsm 3.0.0 → 4.0.1

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 (52) hide show
  1. package/.nyc_output/a30c62b8-a571-43ac-a0aa-a56520c8ba67.json +1 -0
  2. package/.nyc_output/processinfo/a30c62b8-a571-43ac-a0aa-a56520c8ba67.json +1 -0
  3. package/.nyc_output/processinfo/index.json +1 -1
  4. package/README.md +20 -1
  5. package/coverage/lcov-report/block-navigation.js +8 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +34 -29
  8. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  9. package/coverage/lcov-report/sorter.js +26 -0
  10. package/coverage/lcov-report/src/index.html +22 -17
  11. package/coverage/lcov-report/src/index.js.html +42 -52
  12. package/coverage/lcov-report/src/methods/_getChain.js.html +18 -13
  13. package/coverage/lcov-report/src/methods/_onUpdateTask.js.html +24 -19
  14. package/coverage/lcov-report/src/methods/_setTransitions.js.html +39 -34
  15. package/coverage/lcov-report/src/methods/_transit.js.html +23 -18
  16. package/coverage/lcov-report/src/methods/_triggerCacheUpdate.js.html +21 -16
  17. package/coverage/lcov-report/src/methods/_updateStep.js.html +51 -46
  18. package/coverage/lcov-report/src/methods/_warn.js.html +30 -34
  19. package/coverage/lcov-report/src/methods/exportState.js.html +25 -20
  20. package/coverage/lcov-report/src/methods/getState.js.html +18 -13
  21. package/coverage/lcov-report/src/methods/ignoreCacheUpdates.js.html +19 -14
  22. package/coverage/lcov-report/src/methods/importState.js.html +29 -21
  23. package/coverage/lcov-report/src/methods/index.html +109 -104
  24. package/coverage/lcov-report/src/methods/index.js.html +53 -57
  25. package/coverage/lcov-report/src/methods/off.js.html +25 -20
  26. package/coverage/lcov-report/src/methods/on.js.html +21 -16
  27. package/coverage/lcov-report/src/methods/reset.js.html +22 -14
  28. package/coverage/lcov-report/src/methods/setDependencies.js.html +20 -12
  29. package/coverage/lcov-report/src/methods/update.js.html +22 -17
  30. package/coverage/lcov.info +400 -228
  31. package/coverage/tmp/coverage-29775-1668580484020-0.json +1 -0
  32. package/package.json +8 -7
  33. package/src/index.js +10 -15
  34. package/src/methods/_getChain.js +1 -1
  35. package/src/methods/_onUpdateTask.js +1 -1
  36. package/src/methods/_setTransitions.js +1 -1
  37. package/src/methods/_transit.js +2 -2
  38. package/src/methods/_triggerCacheUpdate.js +1 -1
  39. package/src/methods/_updateStep.js +1 -1
  40. package/src/methods/_warn.js +4 -7
  41. package/src/methods/exportState.js +2 -2
  42. package/src/methods/getState.js +1 -1
  43. package/src/methods/ignoreCacheUpdates.js +1 -1
  44. package/src/methods/importState.js +5 -4
  45. package/src/methods/index.js +17 -20
  46. package/src/methods/off.js +1 -1
  47. package/src/methods/on.js +1 -1
  48. package/src/methods/reset.js +3 -2
  49. package/src/methods/setDependencies.js +2 -1
  50. package/src/methods/update.js +1 -1
  51. package/.nyc_output/4a8b551d-193d-40e4-b4cf-69d27eebf18e.json +0 -1
  52. package/.nyc_output/processinfo/4a8b551d-193d-40e4-b4cf-69d27eebf18e.json +0 -1
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":25560,"argv":["/usr/local/bin/node","/Users/peternaydenov/Sites/git-fsm/node_modules/.bin/mocha","test"],"execArgv":[],"cwd":"/Users/peternaydenov/Sites/git-fsm","time":1668538171023,"ppid":25559,"coverageFilename":"/Users/peternaydenov/Sites/git-fsm/.nyc_output/a30c62b8-a571-43ac-a0aa-a56520c8ba67.json","externalId":"","uuid":"a30c62b8-a571-43ac-a0aa-a56520c8ba67","files":[]}
@@ -1 +1 @@
1
- {"processes":{"4a8b551d-193d-40e4-b4cf-69d27eebf18e":{"parent":null,"children":[]}},"files":{"/Users/peternaydenov/Sites/git-fsm/src/index.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/index.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_setTransitions.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_updateStep.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_warn.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_transit.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_getChain.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_triggerCacheUpdate.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/_onUpdateTask.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/setDependencies.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/on.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/off.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/importState.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/exportState.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/update.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/reset.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/ignoreCacheUpdates.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"],"/Users/peternaydenov/Sites/git-fsm/src/methods/getState.js":["4a8b551d-193d-40e4-b4cf-69d27eebf18e"]},"externalIds":{}}
1
+ {"processes":{"a30c62b8-a571-43ac-a0aa-a56520c8ba67":{"parent":null,"children":[]}},"files":{},"externalIds":{}}
package/README.md CHANGED
@@ -54,12 +54,15 @@ npm i @peter.naydenov/fsm
54
54
  Add in your script:
55
55
 
56
56
  ```js
57
- const Fsm = require ( '@peter.naydenov/fsm' )
57
+ import Fsm from '@peter.naydenov/fsm'
58
58
  // init new fsm:
59
59
  const fsm = new Fsm ( machine, lib )
60
60
  ```
61
61
  ... where **machine** is fsm-description and **lib** is a transition-library.
62
62
 
63
+ If your project is commonJS, use a dynamic `import` function or use version v.3.0.0 or older.
64
+
65
+
63
66
 
64
67
  ## Fsm Description
65
68
  Fsm description is an object that define fsm business logic. Every fsm description should contain **init** and **table** properties.:
@@ -407,18 +410,34 @@ So... about changes:
407
410
 
408
411
  ## Release History
409
412
 
413
+
414
+ ### 4.0.1 ( 2022-11-16)
415
+ - [x] Walk was removed. Generates a lot of problems with objects in stateData(HTMLElement, Date, URL). StateData is using a shallow copy. Developer should take care of immutability himself;
416
+
417
+ ### 4.0.0 (2022-11-15)
418
+ - [x] The library become a ES module;
419
+
420
+
421
+
410
422
  ### 3.0.0 (2022-10-14)
411
423
  - [x] Dependency "@peter.naydenov/walk" was upgraded to version 3.0.0;
412
424
 
425
+
426
+
413
427
  ### 2.2.4 ( 2022-05-27 )
414
428
  - [x] New dependency was added - walk ("@peter.naydenov/walk");
415
429
  - [x] "Walk" is loaded by default in fsm dependency object;
416
430
  - [x] "Ask-for-promise" is loaded by default in fsm dependency object;
417
431
  - [x] Deep copy for stateData on each update with "walk" library;
418
432
 
433
+
434
+
419
435
  ### 2.2.3 ( 2021-04-02 )
420
436
  - [x] Fix: Duplicated update callback if logic contain a chainAction;
421
437
 
438
+
439
+
440
+
422
441
  ### 2.2.2 ( 2021-03-26 )
423
442
  - [x] Internal code refactoring;
424
443
  - [ ] Bug: Duplicated update callback if logic contain a chainAction;
@@ -63,6 +63,14 @@ var jumpToCode = (function init() {
63
63
  }
64
64
 
65
65
  return function jump(event) {
66
+ if (
67
+ document.getElementById('fileSearch') === document.activeElement &&
68
+ document.activeElement != null
69
+ ) {
70
+ // if we're currently focused on the search input, we don't want to navigate
71
+ return;
72
+ }
73
+
66
74
  switch (event.which) {
67
75
  case 78: // n
68
76
  case 74: // j
Binary file
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.05% </span>
26
+ <span class="strong">97.48% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>174/185</span>
28
+ <span class='fraction'>349/358</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">80.39% </span>
33
+ <span class="strong">96.77% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>41/51</span>
35
+ <span class='fraction'>90/93</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">92% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>46/50</span>
42
+ <span class='fraction'>19/19</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">96.39% </span>
47
+ <span class="strong">97.48% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>160/166</span>
49
+ <span class='fraction'>349/358</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <div class="pad1">
@@ -74,32 +80,32 @@
74
80
  </thead>
75
81
  <tbody><tr>
76
82
  <td class="file high" data-value="src"><a href="src/index.html">src</a></td>
77
- <td data-value="95.83" class="pic high">
78
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
83
+ <td data-value="100" class="pic high">
84
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
79
85
  </td>
80
- <td data-value="95.83" class="pct high">95.83%</td>
81
- <td data-value="24" class="abs high">23/24</td>
82
- <td data-value="85.71" class="pct high">85.71%</td>
83
- <td data-value="7" class="abs high">6/7</td>
84
86
  <td data-value="100" class="pct high">100%</td>
85
- <td data-value="2" class="abs high">2/2</td>
87
+ <td data-value="39" class="abs high">39/39</td>
88
+ <td data-value="83.33" class="pct high">83.33%</td>
89
+ <td data-value="6" class="abs high">5/6</td>
90
+ <td data-value="100" class="pct high">100%</td>
91
+ <td data-value="1" class="abs high">1/1</td>
86
92
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="23" class="abs high">23/23</td>
93
+ <td data-value="39" class="abs high">39/39</td>
88
94
  </tr>
89
95
 
90
96
  <tr>
91
97
  <td class="file high" data-value="src/methods"><a href="src/methods/index.html">src/methods</a></td>
92
- <td data-value="93.79" class="pic high">
93
- <div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
98
+ <td data-value="97.17" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
94
100
  </td>
95
- <td data-value="93.79" class="pct high">93.79%</td>
96
- <td data-value="161" class="abs high">151/161</td>
97
- <td data-value="79.55" class="pct medium">79.55%</td>
98
- <td data-value="44" class="abs medium">35/44</td>
99
- <td data-value="91.67" class="pct high">91.67%</td>
100
- <td data-value="48" class="abs high">44/48</td>
101
- <td data-value="95.8" class="pct high">95.8%</td>
102
- <td data-value="143" class="abs high">137/143</td>
101
+ <td data-value="97.17" class="pct high">97.17%</td>
102
+ <td data-value="319" class="abs high">310/319</td>
103
+ <td data-value="97.7" class="pct high">97.7%</td>
104
+ <td data-value="87" class="abs high">85/87</td>
105
+ <td data-value="100" class="pct high">100%</td>
106
+ <td data-value="18" class="abs high">18/18</td>
107
+ <td data-value="97.17" class="pct high">97.17%</td>
108
+ <td data-value="319" class="abs high">310/319</td>
103
109
  </tr>
104
110
 
105
111
  </tbody>
@@ -109,10 +115,9 @@
109
115
  </div><!-- /wrapper -->
110
116
  <div class='footer quiet pad2 space-top1 center small'>
111
117
  Code coverage generated by
112
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
113
- at Fri Oct 14 2022 08:55:54 GMT+0300 (Eastern European Summer Time)
118
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
+ at 2022-11-16T06:34:44.092Z
114
120
  </div>
115
- </div>
116
121
  <script src="prettify.js"></script>
117
122
  <script>
118
123
  window.onload = function () {
@@ -24,6 +24,31 @@ var addSorting = (function() {
24
24
  return getTableHeader().querySelectorAll('th')[n];
25
25
  }
26
26
 
27
+ function onFilterInput() {
28
+ const searchValue = document.getElementById('fileSearch').value;
29
+ const rows = document.getElementsByTagName('tbody')[0].children;
30
+ for (let i = 0; i < rows.length; i++) {
31
+ const row = rows[i];
32
+ if (
33
+ row.textContent
34
+ .toLowerCase()
35
+ .includes(searchValue.toLowerCase())
36
+ ) {
37
+ row.style.display = '';
38
+ } else {
39
+ row.style.display = 'none';
40
+ }
41
+ }
42
+ }
43
+
44
+ // loads the search box
45
+ function addSearchBox() {
46
+ var template = document.getElementById('filterTemplate');
47
+ var templateClone = template.content.cloneNode(true);
48
+ templateClone.getElementById('fileSearch').oninput = onFilterInput;
49
+ template.parentElement.appendChild(templateClone);
50
+ }
51
+
27
52
  // loads all columns
28
53
  function loadColumns() {
29
54
  var colNodes = getTableHeader().querySelectorAll('th'),
@@ -162,6 +187,7 @@ var addSorting = (function() {
162
187
  }
163
188
  cols = loadColumns();
164
189
  loadData();
190
+ addSearchBox();
165
191
  addSortIndicators();
166
192
  enableUI();
167
193
  };
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.83% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>23/24</span>
28
+ <span class='fraction'>39/39</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">85.71% </span>
33
+ <span class="strong">83.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>6/7</span>
35
+ <span class='fraction'>5/6</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>23/23</span>
49
+ <span class='fraction'>39/39</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <div class="pad1">
@@ -74,17 +80,17 @@
74
80
  </thead>
75
81
  <tbody><tr>
76
82
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
77
- <td data-value="95.83" class="pic high">
78
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
83
+ <td data-value="100" class="pic high">
84
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
79
85
  </td>
80
- <td data-value="95.83" class="pct high">95.83%</td>
81
- <td data-value="24" class="abs high">23/24</td>
82
- <td data-value="85.71" class="pct high">85.71%</td>
83
- <td data-value="7" class="abs high">6/7</td>
84
86
  <td data-value="100" class="pct high">100%</td>
85
- <td data-value="2" class="abs high">2/2</td>
87
+ <td data-value="39" class="abs high">39/39</td>
88
+ <td data-value="83.33" class="pct high">83.33%</td>
89
+ <td data-value="6" class="abs high">5/6</td>
86
90
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="23" class="abs high">23/23</td>
91
+ <td data-value="1" class="abs high">1/1</td>
92
+ <td data-value="100" class="pct high">100%</td>
93
+ <td data-value="39" class="abs high">39/39</td>
88
94
  </tr>
89
95
 
90
96
  </tbody>
@@ -94,10 +100,9 @@
94
100
  </div><!-- /wrapper -->
95
101
  <div class='footer quiet pad2 space-top1 center small'>
96
102
  Code coverage generated by
97
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Fri Oct 14 2022 08:55:54 GMT+0300 (Eastern European Summer Time)
103
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
+ at 2022-11-16T06:34:44.092Z
99
105
  </div>
100
- </div>
101
106
  <script src="../prettify.js"></script>
102
107
  <script>
103
108
  window.onload = function () {
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.83% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>23/24</span>
28
+ <span class='fraction'>39/39</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">85.71% </span>
33
+ <span class="strong">83.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>6/7</span>
35
+ <span class='fraction'>5/6</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>23/23</span>
49
+ <span class='fraction'>39/39</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -98,64 +104,52 @@
98
104
  <a name='L39'></a><a href='#L39'>39</a>
99
105
  <a name='L40'></a><a href='#L40'>40</a>
100
106
  <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
107
- <span class="cline-any cline-neutral">&nbsp;</span>
107
+ <a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
108
+ <span class="cline-any cline-yes">1x</span>
108
109
  <span class="cline-any cline-yes">1x</span>
109
110
  <span class="cline-any cline-yes">1x</span>
110
111
  <span class="cline-any cline-yes">1x</span>
111
112
  <span class="cline-any cline-yes">1x</span>
112
- <span class="cline-any cline-neutral">&nbsp;</span>
113
- <span class="cline-any cline-neutral">&nbsp;</span>
114
- <span class="cline-any cline-neutral">&nbsp;</span>
115
113
  <span class="cline-any cline-yes">17x</span>
116
- <span class="cline-any cline-neutral">&nbsp;</span>
117
114
  <span class="cline-any cline-yes">17x</span>
118
115
  <span class="cline-any cline-yes">17x</span>
119
116
  <span class="cline-any cline-yes">17x</span>
120
117
  <span class="cline-any cline-yes">17x</span>
121
118
  <span class="cline-any cline-yes">17x</span>
122
119
  <span class="cline-any cline-yes">17x</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
120
  <span class="cline-any cline-yes">17x</span>
125
121
  <span class="cline-any cline-yes">17x</span>
126
122
  <span class="cline-any cline-yes">17x</span>
127
123
  <span class="cline-any cline-yes">17x</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-neutral">&nbsp;</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-neutral">&nbsp;</span>
134
124
  <span class="cline-any cline-yes">17x</span>
135
- <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-yes">17x</span>
126
+ <span class="cline-any cline-yes">17x</span>
127
+ <span class="cline-any cline-yes">17x</span>
128
+ <span class="cline-any cline-yes">17x</span>
129
+ <span class="cline-any cline-yes">17x</span>
130
+ <span class="cline-any cline-yes">17x</span>
131
+ <span class="cline-any cline-yes">17x</span>
132
+ <span class="cline-any cline-yes">17x</span>
133
+ <span class="cline-any cline-yes">272x</span>
136
134
  <span class="cline-any cline-yes">272x</span>
137
- <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
135
  <span class="cline-any cline-yes">17x</span>
140
136
  <span class="cline-any cline-yes">17x</span>
141
137
  <span class="cline-any cline-yes">17x</span>
142
138
  <span class="cline-any cline-yes">17x</span>
143
139
  <span class="cline-any cline-yes">17x</span>
144
- <span class="cline-any cline-neutral">&nbsp;</span>
145
- <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-yes">17x</span>
141
+ <span class="cline-any cline-yes">1x</span>
142
+ <span class="cline-any cline-yes">1x</span>
143
+ <span class="cline-any cline-yes">1x</span>
144
+ <span class="cline-any cline-yes">1x</span>
149
145
  <span class="cline-any cline-yes">1x</span>
150
146
  <span class="cline-any cline-neutral">&nbsp;</span>
151
147
  <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&nbsp;
153
- const
154
- MISSING_STATE = 'N/A'
155
- , askForPromise = require ( 'ask-for-promise' )
156
- , methods = require ( './methods/index' )
157
- , walk = require ( '@peter.naydenov/walk' )
158
- ;
148
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import walk from '@peter.naydenov/walk'
149
+ import methods from './methods/index.js'
150
+ import askForPromise from 'ask-for-promise'
151
+ &nbsp;
152
+ const MISSING_STATE = 'N/A';
159
153
  &nbsp;
160
154
  function Fsm ({init, table, stateData, debug }, lib={} ) {
161
155
  const fsm = this;
@@ -165,10 +159,9 @@ function Fsm ({init, table, stateData, debug }, lib={} ) {
165
159
  fsm.lock = false // switch 'ON' during transition in progress. Write other updates in cache.
166
160
  fsm.cache = [] // cached 'update' commands
167
161
  fsm.askForPromise = askForPromise
168
- fsm.___walk = walk
169
162
  &nbsp;
170
- fsm.stateData = walk ({ data:stateData })
171
- fsm.initialStateData = walk ({ data:stateData })
163
+ fsm.stateData = { ...stateData }
164
+ fsm.initialStateData = Object.freeze ({ ...stateData })
172
165
  fsm.dependencies = { walk, askForPromise }
173
166
  fsm.callback = {
174
167
  update : []
@@ -177,13 +170,12 @@ function Fsm ({init, table, stateData, debug }, lib={} ) {
177
170
  , negative : []
178
171
  }
179
172
  &nbsp;
180
- walk ({ // Attach methods to fsm
181
- data:methods
182
- , keyCallback : ({key:k}) =&gt; fsm[k] = methods[k](fsm)
183
- })
173
+ for ( let k in methods ) {
174
+ fsm[k] = methods[k](fsm)
175
+ }
184
176
  &nbsp;
185
177
  const {transitions, nextState, chainActions } = fsm._setTransitions ( table, lib );
186
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( debug ) <span class="cstat-no" title="statement not covered" >fsm._warn ( transitions )</span>
178
+ if ( debug ) <span class="branch-0 cbranch-no" title="branch not covered" >fsm._warn ( transitions )</span>
187
179
  fsm.transitions = transitions
188
180
  fsm.nextState = nextState
189
181
  fsm.chainActions = chainActions
@@ -191,8 +183,7 @@ function Fsm ({init, table, stateData, debug }, lib={} ) {
191
183
  &nbsp;
192
184
  &nbsp;
193
185
  &nbsp;
194
- &nbsp;
195
- module.exports = Fsm
186
+ export default Fsm
196
187
  &nbsp;
197
188
  &nbsp;
198
189
  &nbsp;</pre></td></tr></table></pre>
@@ -201,10 +192,9 @@ module.exports = Fsm
201
192
  </div><!-- /wrapper -->
202
193
  <div class='footer quiet pad2 space-top1 center small'>
203
194
  Code coverage generated by
204
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
205
- at Fri Oct 14 2022 08:55:54 GMT+0300 (Eastern European Summer Time)
195
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
+ at 2022-11-16T06:34:44.092Z
206
197
  </div>
207
- </div>
208
198
  <script src="../prettify.js"></script>
209
199
  <script>
210
200
  window.onload = function () {
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>5/5</span>
28
+ <span class='fraction'>9/9</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/2</span>
35
+ <span class='fraction'>5/5</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>4/4</span>
49
+ <span class='fraction'>9/9</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -68,14 +74,14 @@
68
74
  <a name='L9'></a><a href='#L9'>9</a>
69
75
  <a name='L10'></a><a href='#L10'>10</a>
70
76
  <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
77
+ <a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
72
78
  <span class="cline-any cline-yes">17x</span>
73
79
  <span class="cline-any cline-yes">23x</span>
74
80
  <span class="cline-any cline-yes">4x</span>
75
- <span class="cline-any cline-neutral">&nbsp;</span>
76
- <span class="cline-any cline-neutral">&nbsp;</span>
77
- <span class="cline-any cline-neutral">&nbsp;</span>
78
- <span class="cline-any cline-neutral">&nbsp;</span>
81
+ <span class="cline-any cline-yes">1x</span>
82
+ <span class="cline-any cline-yes">1x</span>
83
+ <span class="cline-any cline-yes">1x</span>
84
+ <span class="cline-any cline-yes">1x</span>
79
85
  <span class="cline-any cline-yes">1x</span>
80
86
  <span class="cline-any cline-neutral">&nbsp;</span>
81
87
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -87,7 +93,7 @@ return function ( chainActions, key ) {
87
93
  &nbsp;
88
94
  &nbsp;
89
95
  &nbsp;
90
- module.exports = _getChain
96
+ export default _getChain
91
97
  &nbsp;
92
98
  &nbsp;
93
99
  &nbsp;</pre></td></tr></table></pre>
@@ -96,10 +102,9 @@ module.exports = _getChain
96
102
  </div><!-- /wrapper -->
97
103
  <div class='footer quiet pad2 space-top1 center small'>
98
104
  Code coverage generated by
99
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
100
- at Fri Oct 14 2022 08:55:54 GMT+0300 (Eastern European Summer Time)
105
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
106
+ at 2022-11-16T06:34:44.092Z
101
107
  </div>
102
- </div>
103
108
  <script src="../../prettify.js"></script>
104
109
  <script>
105
110
  window.onload = function () {