jssm 5.73.0 → 5.75.0

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.
package/.clocignore ADDED
@@ -0,0 +1 @@
1
+ ./src/ts/jssm-dot.ts
package/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- 933 merges; 122 releases; Changlogging the last 10 commits; Full changelog at [CHANGELOG.long.md](CHANGELOG.long.md)
5
+ 946 merges; 125 releases; Changlogging the last 10 commits; Full changelog at [CHANGELOG.long.md](CHANGELOG.long.md)
6
6
 
7
7
 
8
8
 
@@ -12,7 +12,7 @@ All notable changes to this project will be documented in this file.
12
12
 
13
13
  Published tags:
14
14
 
15
- <a href="#5__72__5">5.72.5</a>, <a href="#5__72__4">5.72.4</a>, <a href="#5__72__3">5.72.3</a>, <a href="#5__72__2">5.72.2</a>, <a href="#5__72__1">5.72.1</a>, <a href="#5__72__0">5.72.0</a>, <a href="#5__71__1">5.71.1</a>, <a href="#5__71__0">5.71.0</a>, <a href="#5__70__36">5.70.36</a>, <a href="#5__70__35">5.70.35</a>, <a href="#5__70__34">5.70.34</a>, <a href="#5__70__33">5.70.33</a>, <a href="#5__70__32">5.70.32</a>, <a href="#5__70__31">5.70.31</a>, <a href="#5__70__30">5.70.30</a>, <a href="#5__70__29">5.70.29</a>, <a href="#5__70__28">5.70.28</a>, <a href="#5__70__27">5.70.27</a>, <a href="#5__70__26">5.70.26</a>, <a href="#5__70__25">5.70.25</a>, <a href="#5__70__24">5.70.24</a>, <a href="#5__70__23">5.70.23</a>, <a href="#5__70__22">5.70.22</a>, <a href="#5__70__21">5.70.21</a>, <a href="#5__70__20">5.70.20</a>, <a href="#5__70__19">5.70.19</a>, <a href="#5__70__18">5.70.18</a>, <a href="#5__70__16">5.70.16</a>, <a href="#5__70__15">5.70.15</a>, <a href="#5__70__14">5.70.14</a>, <a href="#5__70__13">5.70.13</a>, <a href="#5__70__12">5.70.12</a>, <a href="#5__70__11">5.70.11</a>, <a href="#5__70__10">5.70.10</a>, <a href="#5__70__9">5.70.9</a>, <a href="#5__70__8">5.70.8</a>, <a href="#5__70__7">5.70.7</a>, <a href="#5__70__6">5.70.6</a>, <a href="#5__70__5">5.70.5</a>, <a href="#5__70__4">5.70.4</a>, <a href="#5__70__3">5.70.3</a>, <a href="#5__70__2">5.70.2</a>, <a href="#5__70__1">5.70.1</a>, <a href="#5__70__0">5.70.0</a>, <a href="#5__69__4">5.69.4</a>, <a href="#5__69__3">5.69.3</a>, <a href="#5__69__2">5.69.2</a>, <a href="#5__69__0">5.69.0</a>, <a href="#5__68__0">5.68.0</a>, <a href="#5__67__2">5.67.2</a>, <a href="#5__67__0">5.67.0</a>, <a href="#5__66__0">5.66.0</a>, <a href="#5__65__14">5.65.14</a>, <a href="#5__65__12">5.65.12</a>, <a href="#5__65__11">5.65.11</a>, <a href="#5__65__10">5.65.10</a>, <a href="#5__65__9">5.65.9</a>, <a href="#5__65__8">5.65.8</a>, <a href="#5__65__7">5.65.7</a>, <a href="#5__65__5">5.65.5</a>, <a href="#5__65__4">5.65.4</a>, <a href="#5__65__3">5.65.3</a>, <a href="#5__65__2">5.65.2</a>, <a href="#5__65__1">5.65.1</a>, <a href="#5__65__0">5.65.0</a>, <a href="#5__64__2">5.64.2</a>, <a href="#5__64__1">5.64.1</a>, <a href="#5__64__0">5.64.0</a>, <a href="#5__63__0">5.63.0</a>, <a href="#5__62__0">5.62.0</a>, <a href="#5__61__4">5.61.4</a>, <a href="#5__61__3">5.61.3</a>, <a href="#5__61__2">5.61.2</a>, <a href="#5__61__1">5.61.1</a>, <a href="#5__60__4">5.60.4</a>, <a href="#5__60__3">5.60.3</a>, <a href="#5__60__0">5.60.0</a>, <a href="#5__59__1">5.59.1</a>, <a href="#5__59__0">5.59.0</a>, <a href="#5__58__1">5.58.1</a>, <a href="#5__58__0">5.58.0</a>, <a href="#5__57__1">5.57.1</a>, <a href="#5__57__0">5.57.0</a>, <a href="#5__56__2">5.56.2</a>, <a href="#5__56__1">5.56.1</a>, <a href="#5__55__0">5.55.0</a>, <a href="#5__54__0">5.54.0</a>, <a href="#5__53__0">5.53.0</a>, <a href="#5__52__0">5.52.0</a>, <a href="#5__51__0">5.51.0</a>, <a href="#5__50__0">5.50.0</a>, <a href="#5__49__0">5.49.0</a>, <a href="#5__48__0">5.48.0</a>, <a href="#5__47__0">5.47.0</a>, <a href="#5__46__0">5.46.0</a>, <a href="#5__45__2">5.45.2</a>, <a href="#5__45__0">5.45.0</a>, <a href="#5__44__0">5.44.0</a>, <a href="#5__43__2">5.43.2</a>, <a href="#v5__42__0">v5.42.0</a>, <a href="#5__42__0">5.42.0</a>, <a href="#v5__41__15">v5.41.15</a>, <a href="#5__41__15">5.41.15</a>, <a href="#v5__41__14">v5.41.14</a>, <a href="#5__41__14">5.41.14</a>, <a href="#v5__41__12">v5.41.12</a>, <a href="#5__41__12">5.41.12</a>, <a href="#v5__41__10">v5.41.10</a>, <a href="#5__41__10">5.41.10</a>, <a href="#v5__41__9">v5.41.9</a>, <a href="#5__41__9">5.41.9</a>, <a href="#v5__41__8">v5.41.8</a>, <a href="#5__41__8">5.41.8</a>, <a href="#v5__41__7">v5.41.7</a>, <a href="#v5__41__2">v5.41.2</a>, <a href="#v5__41__1">v5.41.1</a>, <a href="#v5__32__14">v5.32.14</a>, <a href="#5__14__0">5.14.0</a>, <a href="#5__12__0">5.12.0</a>, <a href="#5__11__12">5.11.12</a>, <a href="#5__11__1">5.11.1</a>, <a href="#5__11__0">5.11.0</a>
15
+ <a href="#5__74__0">5.74.0</a>, <a href="#5__73__1">5.73.1</a>, <a href="#5__73__0">5.73.0</a>, <a href="#5__72__5">5.72.5</a>, <a href="#5__72__4">5.72.4</a>, <a href="#5__72__3">5.72.3</a>, <a href="#5__72__2">5.72.2</a>, <a href="#5__72__1">5.72.1</a>, <a href="#5__72__0">5.72.0</a>, <a href="#5__71__1">5.71.1</a>, <a href="#5__71__0">5.71.0</a>, <a href="#5__70__36">5.70.36</a>, <a href="#5__70__35">5.70.35</a>, <a href="#5__70__34">5.70.34</a>, <a href="#5__70__33">5.70.33</a>, <a href="#5__70__32">5.70.32</a>, <a href="#5__70__31">5.70.31</a>, <a href="#5__70__30">5.70.30</a>, <a href="#5__70__29">5.70.29</a>, <a href="#5__70__28">5.70.28</a>, <a href="#5__70__27">5.70.27</a>, <a href="#5__70__26">5.70.26</a>, <a href="#5__70__25">5.70.25</a>, <a href="#5__70__24">5.70.24</a>, <a href="#5__70__23">5.70.23</a>, <a href="#5__70__22">5.70.22</a>, <a href="#5__70__21">5.70.21</a>, <a href="#5__70__20">5.70.20</a>, <a href="#5__70__19">5.70.19</a>, <a href="#5__70__18">5.70.18</a>, <a href="#5__70__16">5.70.16</a>, <a href="#5__70__15">5.70.15</a>, <a href="#5__70__14">5.70.14</a>, <a href="#5__70__13">5.70.13</a>, <a href="#5__70__12">5.70.12</a>, <a href="#5__70__11">5.70.11</a>, <a href="#5__70__10">5.70.10</a>, <a href="#5__70__9">5.70.9</a>, <a href="#5__70__8">5.70.8</a>, <a href="#5__70__7">5.70.7</a>, <a href="#5__70__6">5.70.6</a>, <a href="#5__70__5">5.70.5</a>, <a href="#5__70__4">5.70.4</a>, <a href="#5__70__3">5.70.3</a>, <a href="#5__70__2">5.70.2</a>, <a href="#5__70__1">5.70.1</a>, <a href="#5__70__0">5.70.0</a>, <a href="#5__69__4">5.69.4</a>, <a href="#5__69__3">5.69.3</a>, <a href="#5__69__2">5.69.2</a>, <a href="#5__69__0">5.69.0</a>, <a href="#5__68__0">5.68.0</a>, <a href="#5__67__2">5.67.2</a>, <a href="#5__67__0">5.67.0</a>, <a href="#5__66__0">5.66.0</a>, <a href="#5__65__14">5.65.14</a>, <a href="#5__65__12">5.65.12</a>, <a href="#5__65__11">5.65.11</a>, <a href="#5__65__10">5.65.10</a>, <a href="#5__65__9">5.65.9</a>, <a href="#5__65__8">5.65.8</a>, <a href="#5__65__7">5.65.7</a>, <a href="#5__65__5">5.65.5</a>, <a href="#5__65__4">5.65.4</a>, <a href="#5__65__3">5.65.3</a>, <a href="#5__65__2">5.65.2</a>, <a href="#5__65__1">5.65.1</a>, <a href="#5__65__0">5.65.0</a>, <a href="#5__64__2">5.64.2</a>, <a href="#5__64__1">5.64.1</a>, <a href="#5__64__0">5.64.0</a>, <a href="#5__63__0">5.63.0</a>, <a href="#5__62__0">5.62.0</a>, <a href="#5__61__4">5.61.4</a>, <a href="#5__61__3">5.61.3</a>, <a href="#5__61__2">5.61.2</a>, <a href="#5__61__1">5.61.1</a>, <a href="#5__60__4">5.60.4</a>, <a href="#5__60__3">5.60.3</a>, <a href="#5__60__0">5.60.0</a>, <a href="#5__59__1">5.59.1</a>, <a href="#5__59__0">5.59.0</a>, <a href="#5__58__1">5.58.1</a>, <a href="#5__58__0">5.58.0</a>, <a href="#5__57__1">5.57.1</a>, <a href="#5__57__0">5.57.0</a>, <a href="#5__56__2">5.56.2</a>, <a href="#5__56__1">5.56.1</a>, <a href="#5__55__0">5.55.0</a>, <a href="#5__54__0">5.54.0</a>, <a href="#5__53__0">5.53.0</a>, <a href="#5__52__0">5.52.0</a>, <a href="#5__51__0">5.51.0</a>, <a href="#5__50__0">5.50.0</a>, <a href="#5__49__0">5.49.0</a>, <a href="#5__48__0">5.48.0</a>, <a href="#5__47__0">5.47.0</a>, <a href="#5__46__0">5.46.0</a>, <a href="#5__45__2">5.45.2</a>, <a href="#5__45__0">5.45.0</a>, <a href="#5__44__0">5.44.0</a>, <a href="#5__43__2">5.43.2</a>, <a href="#v5__42__0">v5.42.0</a>, <a href="#5__42__0">5.42.0</a>, <a href="#v5__41__15">v5.41.15</a>, <a href="#5__41__15">5.41.15</a>, <a href="#v5__41__14">v5.41.14</a>, <a href="#5__41__14">5.41.14</a>, <a href="#v5__41__12">v5.41.12</a>, <a href="#5__41__12">5.41.12</a>, <a href="#v5__41__10">v5.41.10</a>, <a href="#5__41__10">5.41.10</a>, <a href="#v5__41__9">v5.41.9</a>, <a href="#5__41__9">5.41.9</a>, <a href="#v5__41__8">v5.41.8</a>, <a href="#5__41__8">5.41.8</a>, <a href="#v5__41__7">v5.41.7</a>, <a href="#v5__41__2">v5.41.2</a>, <a href="#v5__41__1">v5.41.1</a>, <a href="#v5__32__14">v5.32.14</a>, <a href="#5__14__0">5.14.0</a>, <a href="#5__12__0">5.12.0</a>, <a href="#5__11__12">5.11.12</a>, <a href="#5__11__1">5.11.1</a>, <a href="#5__11__0">5.11.0</a>
16
16
 
17
17
 
18
18
 
@@ -22,18 +22,13 @@ Published tags:
22
22
 
23
23
  &nbsp;
24
24
 
25
- <a name="5__72__5" />
25
+ ## [Untagged] - 7/3/2022 10:40:28 AM
26
26
 
27
- ## [5.72.5] - 6/25/2022 11:07:29 AM
28
-
29
- Commit [f1a61f1e967df66b87f2b6b39f75636659f496e9](https://github.com/StoneCypher/jssm/commit/f1a61f1e967df66b87f2b6b39f75636659f496e9)
27
+ Commit [2526a1be2684b58e56fa44d28090a756e330b495](https://github.com/StoneCypher/jssm/commit/2526a1be2684b58e56fa44d28090a756e330b495)
30
28
 
31
29
  Author: `John Haugeland <stonecypher@gmail.com>`
32
30
 
33
- Merges [dc3096f, 751c5fd]
34
-
35
- * Merge pull request #503 from StoneCypher/AttemptToCaptureTestResults
36
- * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
31
+ * Parsing of JSON part done.
37
32
 
38
33
 
39
34
 
@@ -42,13 +37,13 @@ Merges [dc3096f, 751c5fd]
42
37
 
43
38
  &nbsp;
44
39
 
45
- ## [Untagged] - 6/25/2022 11:04:20 AM
40
+ ## [Untagged] - 7/3/2022 10:08:02 AM
46
41
 
47
- Commit [751c5fd0cc8c9751331e664e8f51af34f736ce31](https://github.com/StoneCypher/jssm/commit/751c5fd0cc8c9751331e664e8f51af34f736ce31)
42
+ Commit [99ef3d9866ff6830528005c9196456e2b766dc09](https://github.com/StoneCypher/jssm/commit/99ef3d9866ff6830528005c9196456e2b766dc09)
48
43
 
49
44
  Author: `John Haugeland <stonecypher@gmail.com>`
50
45
 
51
- * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
46
+ * added cloc, turned to disk, made a cute little reporter, fixes StoneCypher/fsl#985
52
47
 
53
48
 
54
49
 
@@ -57,18 +52,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
57
52
 
58
53
  &nbsp;
59
54
 
60
- <a name="5__72__4" />
55
+ ## [Untagged] - 7/3/2022 10:08:02 AM
61
56
 
62
- ## [5.72.4] - 6/25/2022 8:12:11 AM
63
-
64
- Commit [dc3096f064e58ea616899b12d3d25c973f326c1c](https://github.com/StoneCypher/jssm/commit/dc3096f064e58ea616899b12d3d25c973f326c1c)
57
+ Commit [986fd0dd50adcb739f54e4fa3712628c94004505](https://github.com/StoneCypher/jssm/commit/986fd0dd50adcb739f54e4fa3712628c94004505)
65
58
 
66
59
  Author: `John Haugeland <stonecypher@gmail.com>`
67
60
 
68
- Merges [a184324, 8762d17]
69
-
70
- * Merge pull request #502 from StoneCypher/AllowHooksToChangeData
71
- * Allow hooks to change data
61
+ * added cloc, turned to disk, made a cute little reporter, fixes StoneCypher/fsl#985
72
62
 
73
63
 
74
64
 
@@ -77,13 +67,13 @@ Merges [a184324, 8762d17]
77
67
 
78
68
  &nbsp;
79
69
 
80
- ## [Untagged] - 6/25/2022 8:08:38 AM
70
+ ## [Untagged] - 7/3/2022 10:08:02 AM
81
71
 
82
- Commit [8762d17bd69cdf48f522dbd6ee188f46e29a0c06](https://github.com/StoneCypher/jssm/commit/8762d17bd69cdf48f522dbd6ee188f46e29a0c06)
72
+ Commit [0c34b68d5a5d6666895965e5f8b4b9a9dadfe397](https://github.com/StoneCypher/jssm/commit/0c34b68d5a5d6666895965e5f8b4b9a9dadfe397)
83
73
 
84
74
  Author: `John Haugeland <stonecypher@gmail.com>`
85
75
 
86
- * Hooks can change data, fixes StoneCypher/fsl#932
76
+ * added cloc, turned to disk, made a cute little reporter, fixes StoneCypher/fsl#985
87
77
 
88
78
 
89
79
 
@@ -92,13 +82,18 @@ Author: `John Haugeland <stonecypher@gmail.com>`
92
82
 
93
83
  &nbsp;
94
84
 
95
- ## [Untagged] - 6/25/2022 7:15:46 AM
85
+ <a name="5__74__0" />
96
86
 
97
- Commit [fb82aff27a911a29304c8b7c211e48c1b6ac454e](https://github.com/StoneCypher/jssm/commit/fb82aff27a911a29304c8b7c211e48c1b6ac454e)
87
+ ## [5.74.0] - 7/2/2022 11:38:27 AM
88
+
89
+ Commit [3940ac2b520c843153af11b2c67b0e8915ede619](https://github.com/StoneCypher/jssm/commit/3940ac2b520c843153af11b2c67b0e8915ede619)
98
90
 
99
91
  Author: `John Haugeland <stonecypher@gmail.com>`
100
92
 
101
- * prepping to test main and forced
93
+ Merges [89b9c2c, 9543655]
94
+
95
+ * Merge pull request #505 from StoneCypher/PostHooks
96
+ * Post hooks Fixes StoneCypher/fsl#897, StoneCypher/fsl#898, StoneCypher/fsl#899, StoneCypher/fsl#900, StoneCypher/fsl#901, StoneCypher/fsl#902, StoneCypher/fsl#903, StoneCypher/fsl#904, StoneCypher/fsl#905, StoneCypher/fsl#906, StoneCypher/fsl#959, StoneCypher/fsl#960, StoneCypher/fsl#961, StoneCypher/fsl#962, StoneCypher/fsl#963, StoneCypher/fsl#964, StoneCypher/fsl#965, StoneCypher/fsl#966, StoneCypher/fsl#967, StoneCypher/fsl#968, StoneCypher/fsl#969, StoneCypher/fsl#970, StoneCypher/fsl#971, StoneCypher/fsl#972, StoneCypher/fsl#973, StoneCypher/fsl#974, StoneCypher/fsl#976, StoneCypher/fsl#975, StoneCypher/fsl#977
102
97
 
103
98
 
104
99
 
@@ -107,13 +102,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
107
102
 
108
103
  &nbsp;
109
104
 
110
- ## [Untagged] - 6/25/2022 7:05:36 AM
105
+ ## [Untagged] - 7/2/2022 11:35:19 AM
111
106
 
112
- Commit [3ffc6c2a0b76d1a4870cd80a0f94d745e1c976c9](https://github.com/StoneCypher/jssm/commit/3ffc6c2a0b76d1a4870cd80a0f94d745e1c976c9)
107
+ Commit [95436551d075df2f4bb2c4baea55d9f1132e90a6](https://github.com/StoneCypher/jssm/commit/95436551d075df2f4bb2c4baea55d9f1132e90a6)
113
108
 
114
109
  Author: `John Haugeland <stonecypher@gmail.com>`
115
110
 
116
- * everything now tested but standard and main
111
+ * Basic posthooks complete. Fixes StoneCypher/fsl#897, StoneCypher/fsl#898, StoneCypher/fsl#899, StoneCypher/fsl#900, StoneCypher/fsl#901, StoneCypher/fsl#902, StoneCypher/fsl#903, StoneCypher/fsl#904, StoneCypher/fsl#905, StoneCypher/fsl#906, StoneCypher/fsl#959, StoneCypher/fsl#960, StoneCypher/fsl#961, StoneCypher/fsl#962, StoneCypher/fsl#963, StoneCypher/fsl#964, StoneCypher/fsl#965, StoneCypher/fsl#966, StoneCypher/fsl#967, StoneCypher/fsl#968, StoneCypher/fsl#969, StoneCypher/fsl#970, StoneCypher/fsl#971, StoneCypher/fsl#972, StoneCypher/fsl#973, StoneCypher/fsl#974, StoneCypher/fsl#976, StoneCypher/fsl#975, StoneCypher/fsl#977
117
112
 
118
113
 
119
114
 
@@ -122,13 +117,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
122
117
 
123
118
  &nbsp;
124
119
 
125
- ## [Untagged] - 6/25/2022 6:50:50 AM
120
+ ## [Untagged] - 7/2/2022 11:04:51 AM
126
121
 
127
- Commit [e74cb836ae9c06a3261658ee969506c8dd3c9a24](https://github.com/StoneCypher/jssm/commit/e74cb836ae9c06a3261658ee969506c8dd3c9a24)
122
+ Commit [0222ce4624e1463b875bbb68292a39b438f267a3](https://github.com/StoneCypher/jssm/commit/0222ce4624e1463b875bbb68292a39b438f267a3)
128
123
 
129
124
  Author: `John Haugeland <stonecypher@gmail.com>`
130
125
 
131
- * six data kinds tested
126
+ * Nicely tied up, basic set_hook posthooks, all simply tested
132
127
 
133
128
 
134
129
 
@@ -137,13 +132,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
137
132
 
138
133
  &nbsp;
139
134
 
140
- ## [Untagged] - 6/24/2022 9:24:32 PM
135
+ ## [Untagged] - 7/1/2022 4:56:32 PM
141
136
 
142
- Commit [df34e0fd36d969bcb80488c6609d6bf4140b89a4](https://github.com/StoneCypher/jssm/commit/df34e0fd36d969bcb80488c6609d6bf4140b89a4)
137
+ Commit [99847f8ef8c60b521c6d3e979bcf07dd60125a56](https://github.com/StoneCypher/jssm/commit/99847f8ef8c60b521c6d3e979bcf07dd60125a56)
143
138
 
144
139
  Author: `John Haugeland <stonecypher@gmail.com>`
145
140
 
146
- * working test matrix
141
+ * Post global action hook, fixes StoneCypher/fsl#905; post any action hook, fixes StoneCypher/fsl#906
147
142
 
148
143
 
149
144
 
@@ -152,13 +147,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
152
147
 
153
148
  &nbsp;
154
149
 
155
- ## [Untagged] - 6/24/2022 8:34:59 PM
150
+ ## [Untagged] - 7/1/2022 4:03:56 PM
156
151
 
157
- Commit [8db075dcd9a135e6757a11c5e497130bb3edb6a9](https://github.com/StoneCypher/jssm/commit/8db075dcd9a135e6757a11c5e497130bb3edb6a9)
152
+ Commit [e5bfa2acf8edefe9322bd17540307ffb1f9eeb4d](https://github.com/StoneCypher/jssm/commit/e5bfa2acf8edefe9322bd17540307ffb1f9eeb4d)
158
153
 
159
154
  Author: `John Haugeland <stonecypher@gmail.com>`
160
155
 
161
- * Hooks now change data on basic transitions, moving to handle the rest
156
+ * Adds call points in set_hook for basic post-hooks, fixes #958
162
157
 
163
158
 
164
159
 
@@ -167,15 +162,10 @@ Author: `John Haugeland <stonecypher@gmail.com>`
167
162
 
168
163
  &nbsp;
169
164
 
170
- <a name="5__72__3" />
165
+ ## [Untagged] - 6/30/2022 6:03:58 PM
171
166
 
172
- ## [5.72.3] - 6/24/2022 7:48:13 PM
173
-
174
- Commit [a1843247eb5c063910643f675f0a85764f3f3683](https://github.com/StoneCypher/jssm/commit/a1843247eb5c063910643f675f0a85764f3f3683)
167
+ Commit [bb3c0014580c940b1294e19e64ac432c44bb7081](https://github.com/StoneCypher/jssm/commit/bb3c0014580c940b1294e19e64ac432c44bb7081)
175
168
 
176
169
  Author: `John Haugeland <stonecypher@gmail.com>`
177
170
 
178
- Merges [b0cbe1c, d52217a]
179
-
180
- * Merge pull request #501 from StoneCypher/MovingToAbstractHooks
181
- * Moving to abstract hooks
171
+ * Adds posthook path; fixes StoneCypher/fsl#956. Clones datastructures; fixes StoneCypher/fsl#957.
package/README.md CHANGED
@@ -18,14 +18,16 @@ Please edit the file it's derived from, instead: `./src/md/readme_base.md`
18
18
 
19
19
 
20
20
 
21
- * Generated for version 5.73.0 at 6/27/2022, 2:27:29 AM
21
+ * Generated for version 5.75.0 at 7/3/2022, 11:40:44 AM
22
22
 
23
23
  -->
24
24
  # jssm
25
25
 
26
26
  Easy. Small. Fast. TS, es6, es5. Node, Browser. 100% coverage. Property
27
27
  tests. Fuzz tests. Language tests for a dozen languages and emoji. Easy to
28
- share online. Easy to embed. ***4,617 tests***.
28
+ share online. Easy to embed.
29
+
30
+ ***4,655 tests*** run 5,546 times. 4,646 specs with 100.0% coverage, 9 fuzz tests with 5.3% coverage.
29
31
 
30
32
  Readable, useful state machines as one-liner strings.
31
33
 
@@ -234,6 +234,23 @@ declare class Machine<mDT> {
234
234
  _main_transition_hook: HookHandler<mDT> | undefined;
235
235
  _forced_transition_hook: HookHandler<mDT> | undefined;
236
236
  _any_transition_hook: HookHandler<mDT> | undefined;
237
+ _has_post_hooks: boolean;
238
+ _has_post_basic_hooks: boolean;
239
+ _has_post_named_hooks: boolean;
240
+ _has_post_entry_hooks: boolean;
241
+ _has_post_exit_hooks: boolean;
242
+ _has_post_global_action_hooks: boolean;
243
+ _has_post_transition_hooks: boolean;
244
+ _post_hooks: Map<string, HookHandler<mDT>>;
245
+ _post_named_hooks: Map<string, HookHandler<mDT>>;
246
+ _post_entry_hooks: Map<string, HookHandler<mDT>>;
247
+ _post_exit_hooks: Map<string, HookHandler<mDT>>;
248
+ _post_global_action_hooks: Map<string, HookHandler<mDT>>;
249
+ _post_any_action_hook: HookHandler<mDT> | undefined;
250
+ _post_standard_transition_hook: HookHandler<mDT> | undefined;
251
+ _post_main_transition_hook: HookHandler<mDT> | undefined;
252
+ _post_forced_transition_hook: HookHandler<mDT> | undefined;
253
+ _post_any_transition_hook: HookHandler<mDT> | undefined;
237
254
  _history: circular_buffer<[StateType, mDT]>;
238
255
  _history_length: number;
239
256
  constructor({ start_states, complete, transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, fsl_version, dot_preamble, arrange_declaration, arrange_start_declaration, arrange_end_declaration, theme, flow, graph_layout, instance_name, history, data }: JssmGenericConfig<mDT>);
@@ -552,6 +569,16 @@ declare class Machine<mDT> {
552
569
  hook_any_transition(handler: HookHandler<mDT>): Machine<mDT>;
553
570
  hook_entry(to: string, handler: HookHandler<mDT>): Machine<mDT>;
554
571
  hook_exit(from: string, handler: HookHandler<mDT>): Machine<mDT>;
572
+ post_hook(from: string, to: string, handler: HookHandler<mDT>): Machine<mDT>;
573
+ post_hook_action(from: string, to: string, action: string, handler: HookHandler<mDT>): Machine<mDT>;
574
+ post_hook_global_action(action: string, handler: HookHandler<mDT>): Machine<mDT>;
575
+ post_hook_any_action(handler: HookHandler<mDT>): Machine<mDT>;
576
+ post_hook_standard_transition(handler: HookHandler<mDT>): Machine<mDT>;
577
+ post_hook_main_transition(handler: HookHandler<mDT>): Machine<mDT>;
578
+ post_hook_forced_transition(handler: HookHandler<mDT>): Machine<mDT>;
579
+ post_hook_any_transition(handler: HookHandler<mDT>): Machine<mDT>;
580
+ post_hook_entry(to: string, handler: HookHandler<mDT>): Machine<mDT>;
581
+ post_hook_exit(from: string, handler: HookHandler<mDT>): Machine<mDT>;
555
582
  edges_between(from: string, to: string): JssmTransition<mDT>[];
556
583
  transition_impl(newStateOrAction: StateType, newData: mDT | undefined, wasForced: boolean, wasAction: boolean): boolean;
557
584
  /*********
package/dist/es6/jssm.js CHANGED
@@ -570,7 +570,7 @@ class Machine {
570
570
  this._has_exit_hooks = false;
571
571
  this._has_global_action_hooks = false;
572
572
  this._has_transition_hooks = true;
573
- // no need for a boolean has any transition hook, as it's one or nothing, so just test that for undefinedness
573
+ // no need for a boolean for single hooks, just test for undefinedness
574
574
  this._hooks = new Map();
575
575
  this._named_hooks = new Map();
576
576
  this._entry_hooks = new Map();
@@ -581,7 +581,24 @@ class Machine {
581
581
  this._main_transition_hook = undefined;
582
582
  this._forced_transition_hook = undefined;
583
583
  this._any_transition_hook = undefined;
584
- this._standard_transition_hook = undefined;
584
+ this._has_post_hooks = false;
585
+ this._has_post_basic_hooks = false;
586
+ this._has_post_named_hooks = false;
587
+ this._has_post_entry_hooks = false;
588
+ this._has_post_exit_hooks = false;
589
+ this._has_post_global_action_hooks = false;
590
+ this._has_post_transition_hooks = true;
591
+ // no need for a boolean for single hooks, just test for undefinedness
592
+ this._post_hooks = new Map();
593
+ this._post_named_hooks = new Map();
594
+ this._post_entry_hooks = new Map();
595
+ this._post_exit_hooks = new Map();
596
+ this._post_global_action_hooks = new Map();
597
+ this._post_any_action_hook = undefined;
598
+ this._post_standard_transition_hook = undefined;
599
+ this._post_main_transition_hook = undefined;
600
+ this._post_forced_transition_hook = undefined;
601
+ this._post_any_transition_hook = undefined;
585
602
  this._data = data;
586
603
  this._history_length = history || 0;
587
604
  this._history = new circular_buffer(this._history_length);
@@ -1252,6 +1269,54 @@ class Machine {
1252
1269
  this._has_hooks = true;
1253
1270
  this._has_exit_hooks = true;
1254
1271
  break;
1272
+ case 'post hook':
1273
+ this._post_hooks.set(hook_name(HookDesc.from, HookDesc.to), HookDesc.handler);
1274
+ this._has_post_hooks = true;
1275
+ this._has_post_basic_hooks = true;
1276
+ break;
1277
+ case 'post named':
1278
+ this._post_named_hooks.set(named_hook_name(HookDesc.from, HookDesc.to, HookDesc.action), HookDesc.handler);
1279
+ this._has_post_hooks = true;
1280
+ this._has_post_named_hooks = true;
1281
+ break;
1282
+ case 'post global action':
1283
+ this._post_global_action_hooks.set(HookDesc.action, HookDesc.handler);
1284
+ this._has_post_hooks = true;
1285
+ this._has_post_global_action_hooks = true;
1286
+ break;
1287
+ case 'post any action':
1288
+ this._post_any_action_hook = HookDesc.handler;
1289
+ this._has_post_hooks = true;
1290
+ break;
1291
+ case 'post standard transition':
1292
+ this._post_standard_transition_hook = HookDesc.handler;
1293
+ this._has_post_transition_hooks = true;
1294
+ this._has_post_hooks = true;
1295
+ break;
1296
+ case 'post main transition':
1297
+ this._post_main_transition_hook = HookDesc.handler;
1298
+ this._has_post_transition_hooks = true;
1299
+ this._has_post_hooks = true;
1300
+ break;
1301
+ case 'post forced transition':
1302
+ this._post_forced_transition_hook = HookDesc.handler;
1303
+ this._has_post_transition_hooks = true;
1304
+ this._has_post_hooks = true;
1305
+ break;
1306
+ case 'post any transition':
1307
+ this._post_any_transition_hook = HookDesc.handler;
1308
+ this._has_post_hooks = true;
1309
+ break;
1310
+ case 'post entry':
1311
+ this._post_entry_hooks.set(HookDesc.to, HookDesc.handler);
1312
+ this._has_post_entry_hooks = true;
1313
+ this._has_post_hooks = true;
1314
+ break;
1315
+ case 'post exit':
1316
+ this._post_exit_hooks.set(HookDesc.from, HookDesc.handler);
1317
+ this._has_post_exit_hooks = true;
1318
+ this._has_post_hooks = true;
1319
+ break;
1255
1320
  default:
1256
1321
  throw new JssmError(this, `Unknown hook type ${HookDesc.kind}, should be impossible`);
1257
1322
  }
@@ -1296,6 +1361,46 @@ class Machine {
1296
1361
  this.set_hook({ kind: 'exit', from, handler });
1297
1362
  return this;
1298
1363
  }
1364
+ post_hook(from, to, handler) {
1365
+ this.set_hook({ kind: 'post hook', from, to, handler });
1366
+ return this;
1367
+ }
1368
+ post_hook_action(from, to, action, handler) {
1369
+ this.set_hook({ kind: 'post named', from, to, action, handler });
1370
+ return this;
1371
+ }
1372
+ post_hook_global_action(action, handler) {
1373
+ this.set_hook({ kind: 'post global action', action, handler });
1374
+ return this;
1375
+ }
1376
+ post_hook_any_action(handler) {
1377
+ this.set_hook({ kind: 'post any action', handler });
1378
+ return this;
1379
+ }
1380
+ post_hook_standard_transition(handler) {
1381
+ this.set_hook({ kind: 'post standard transition', handler });
1382
+ return this;
1383
+ }
1384
+ post_hook_main_transition(handler) {
1385
+ this.set_hook({ kind: 'post main transition', handler });
1386
+ return this;
1387
+ }
1388
+ post_hook_forced_transition(handler) {
1389
+ this.set_hook({ kind: 'post forced transition', handler });
1390
+ return this;
1391
+ }
1392
+ post_hook_any_transition(handler) {
1393
+ this.set_hook({ kind: 'post any transition', handler });
1394
+ return this;
1395
+ }
1396
+ post_hook_entry(to, handler) {
1397
+ this.set_hook({ kind: 'post entry', to, handler });
1398
+ return this;
1399
+ }
1400
+ post_hook_exit(from, handler) {
1401
+ this.set_hook({ kind: 'post exit', from, handler });
1402
+ return this;
1403
+ }
1299
1404
  // remove_hook(HookDesc: HookDescription) {
1300
1405
  // throw new JssmError(this, 'TODO: Should remove hook here');
1301
1406
  // }
@@ -1331,15 +1436,16 @@ class Machine {
1331
1436
  newState = newStateOrAction;
1332
1437
  }
1333
1438
  }
1439
+ const hook_args = {
1440
+ data: this._data,
1441
+ action: fromAction,
1442
+ from: this._state,
1443
+ to: newState,
1444
+ forced: wasForced,
1445
+ trans_type
1446
+ };
1334
1447
  if (valid) {
1335
1448
  if (this._has_hooks) {
1336
- const hook_args = {
1337
- data: this._data,
1338
- action: fromAction,
1339
- from: this._state,
1340
- to: newState,
1341
- forced: wasForced
1342
- };
1343
1449
  function update_fields(res) {
1344
1450
  if (res.hasOwnProperty('data')) {
1345
1451
  hook_args.data = res.data;
@@ -1436,7 +1542,8 @@ class Machine {
1436
1542
  if (data_changed) {
1437
1543
  this._data = hook_args.data;
1438
1544
  }
1439
- return true;
1545
+ // success fallthrough to posthooks; intentionally no return here
1546
+ // look for "posthooks begin here"
1440
1547
  // or without hooks
1441
1548
  }
1442
1549
  else {
@@ -1444,13 +1551,82 @@ class Machine {
1444
1551
  this._history.shove([this._state, this._data]);
1445
1552
  }
1446
1553
  this._state = newState;
1447
- return true;
1554
+ // success fallthrough to posthooks; intentionally no return here
1555
+ // look for "posthooks begin here"
1448
1556
  }
1449
1557
  // not valid
1450
1558
  }
1451
1559
  else {
1452
1560
  return false;
1453
1561
  }
1562
+ // posthooks begin here
1563
+ if (this._has_post_hooks) {
1564
+ if (wasAction) {
1565
+ // 1. any action posthook
1566
+ if (this._post_any_action_hook !== undefined) {
1567
+ this._post_any_action_hook(hook_args);
1568
+ }
1569
+ // 2. global specific action hook
1570
+ const pgah = this._post_global_action_hooks.get(hook_args.action);
1571
+ if (pgah !== undefined) {
1572
+ pgah(hook_args);
1573
+ }
1574
+ }
1575
+ // 3. any transition hook
1576
+ if (this._post_any_transition_hook !== undefined) {
1577
+ this._post_any_transition_hook(hook_args);
1578
+ }
1579
+ // 4. exit hook
1580
+ if (this._has_post_exit_hooks) {
1581
+ const peh = this._post_exit_hooks.get(hook_args.from); // todo this is probably from instead
1582
+ if (peh !== undefined) {
1583
+ peh(hook_args);
1584
+ }
1585
+ }
1586
+ // 5. named transition / action hook
1587
+ if (this._has_post_named_hooks) {
1588
+ if (wasAction) {
1589
+ const nhn = named_hook_name(hook_args.from, hook_args.to, hook_args.action), pnh = this._post_named_hooks.get(nhn);
1590
+ if (pnh !== undefined) {
1591
+ pnh(hook_args);
1592
+ }
1593
+ }
1594
+ }
1595
+ // 6. regular hook
1596
+ if (this._has_post_basic_hooks) {
1597
+ const hook = this._post_hooks.get(hook_name(hook_args.from, hook_args.to));
1598
+ if (hook !== undefined) {
1599
+ hook(hook_args);
1600
+ }
1601
+ }
1602
+ // 7. edge type hook
1603
+ // 7a. standard transition hook
1604
+ if (trans_type === 'legal') {
1605
+ if (this._post_standard_transition_hook !== undefined) {
1606
+ this._post_standard_transition_hook(hook_args);
1607
+ }
1608
+ }
1609
+ // 7b. main type hook
1610
+ if (trans_type === 'main') {
1611
+ if (this._post_main_transition_hook !== undefined) {
1612
+ this._post_main_transition_hook(hook_args);
1613
+ }
1614
+ }
1615
+ // 7c. forced transition hook
1616
+ if (trans_type === 'forced') {
1617
+ if (this._post_forced_transition_hook !== undefined) {
1618
+ this._post_forced_transition_hook(hook_args);
1619
+ }
1620
+ }
1621
+ // 8. entry hook
1622
+ if (this._has_post_entry_hooks) {
1623
+ const hook = this._post_entry_hooks.get(hook_args.to);
1624
+ if (hook !== undefined) {
1625
+ hook(hook_args);
1626
+ }
1627
+ }
1628
+ }
1629
+ return true;
1454
1630
  }
1455
1631
  /*********
1456
1632
  *
@@ -198,7 +198,55 @@ declare type ExitHook<mDT> = {
198
198
  from: string;
199
199
  handler: HookHandler<mDT>;
200
200
  };
201
- declare type HookDescription<mDT> = BasicHookDescription<mDT> | HookDescriptionWithAction<mDT> | GlobalActionHook<mDT> | AnyActionHook<mDT> | StandardTransitionHook<mDT> | MainTransitionHook<mDT> | ForcedTransitionHook<mDT> | AnyTransitionHook<mDT> | EntryHook<mDT> | ExitHook<mDT>;
201
+ declare type PostBasicHookDescription<mDT> = {
202
+ kind: 'post hook';
203
+ from: string;
204
+ to: string;
205
+ handler: PostHookHandler<mDT>;
206
+ };
207
+ declare type PostHookDescriptionWithAction<mDT> = {
208
+ kind: 'post named';
209
+ from: string;
210
+ to: string;
211
+ action: string;
212
+ handler: PostHookHandler<mDT>;
213
+ };
214
+ declare type PostStandardTransitionHook<mDT> = {
215
+ kind: 'post standard transition';
216
+ handler: PostHookHandler<mDT>;
217
+ };
218
+ declare type PostMainTransitionHook<mDT> = {
219
+ kind: 'post main transition';
220
+ handler: PostHookHandler<mDT>;
221
+ };
222
+ declare type PostForcedTransitionHook<mDT> = {
223
+ kind: 'post forced transition';
224
+ handler: PostHookHandler<mDT>;
225
+ };
226
+ declare type PostAnyTransitionHook<mDT> = {
227
+ kind: 'post any transition';
228
+ handler: PostHookHandler<mDT>;
229
+ };
230
+ declare type PostGlobalActionHook<mDT> = {
231
+ kind: 'post global action';
232
+ action: string;
233
+ handler: PostHookHandler<mDT>;
234
+ };
235
+ declare type PostAnyActionHook<mDT> = {
236
+ kind: 'post any action';
237
+ handler: PostHookHandler<mDT>;
238
+ };
239
+ declare type PostEntryHook<mDT> = {
240
+ kind: 'post entry';
241
+ to: string;
242
+ handler: PostHookHandler<mDT>;
243
+ };
244
+ declare type PostExitHook<mDT> = {
245
+ kind: 'post exit';
246
+ from: string;
247
+ handler: PostHookHandler<mDT>;
248
+ };
249
+ declare type HookDescription<mDT> = BasicHookDescription<mDT> | HookDescriptionWithAction<mDT> | GlobalActionHook<mDT> | AnyActionHook<mDT> | StandardTransitionHook<mDT> | MainTransitionHook<mDT> | ForcedTransitionHook<mDT> | AnyTransitionHook<mDT> | EntryHook<mDT> | ExitHook<mDT> | PostBasicHookDescription<mDT> | PostHookDescriptionWithAction<mDT> | PostGlobalActionHook<mDT> | PostAnyActionHook<mDT> | PostStandardTransitionHook<mDT> | PostMainTransitionHook<mDT> | PostForcedTransitionHook<mDT> | PostAnyTransitionHook<mDT> | PostEntryHook<mDT> | PostExitHook<mDT>;
202
250
  declare type HookComplexResult<mDT> = {
203
251
  pass: boolean;
204
252
  state?: StateType;
@@ -209,6 +257,7 @@ declare type HookContext<mDT> = {
209
257
  data: mDT;
210
258
  };
211
259
  declare type HookHandler<mDT> = (hook_context: HookContext<mDT>) => HookResult<mDT>;
260
+ declare type PostHookHandler<mDT> = (hook_context: HookContext<mDT>) => void;
212
261
  declare type JssmErrorExtendedInfo = {
213
262
  requested_state?: StateType | undefined;
214
263
  };
@@ -1,2 +1,2 @@
1
- const version = "5.73.0";
1
+ const version = "5.75.0";
2
2
  export { version };