jssm 5.72.5 → 5.74.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/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
- 931 merges; 120 releases; Changlogging the last 10 commits; Full changelog at [CHANGELOG.long.md](CHANGELOG.long.md)
5
+ 940 merges; 124 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__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__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,16 +22,13 @@ Published tags:
22
22
 
23
23
  &nbsp;
24
24
 
25
- ## [Untagged] - 6/25/2022 8:12:11 AM
25
+ ## [Untagged] - 7/2/2022 11:04:51 AM
26
26
 
27
- Commit [dc3096f064e58ea616899b12d3d25c973f326c1c](https://github.com/StoneCypher/jssm/commit/dc3096f064e58ea616899b12d3d25c973f326c1c)
27
+ Commit [0222ce4624e1463b875bbb68292a39b438f267a3](https://github.com/StoneCypher/jssm/commit/0222ce4624e1463b875bbb68292a39b438f267a3)
28
28
 
29
29
  Author: `John Haugeland <stonecypher@gmail.com>`
30
30
 
31
- Merges [a184324, 8762d17]
32
-
33
- * Merge pull request #502 from StoneCypher/AllowHooksToChangeData
34
- * Allow hooks to change data
31
+ * Nicely tied up, basic set_hook posthooks, all simply tested
35
32
 
36
33
 
37
34
 
@@ -40,13 +37,13 @@ Merges [a184324, 8762d17]
40
37
 
41
38
  &nbsp;
42
39
 
43
- ## [Untagged] - 6/25/2022 8:08:38 AM
40
+ ## [Untagged] - 7/1/2022 4:56:32 PM
44
41
 
45
- Commit [8762d17bd69cdf48f522dbd6ee188f46e29a0c06](https://github.com/StoneCypher/jssm/commit/8762d17bd69cdf48f522dbd6ee188f46e29a0c06)
42
+ Commit [99847f8ef8c60b521c6d3e979bcf07dd60125a56](https://github.com/StoneCypher/jssm/commit/99847f8ef8c60b521c6d3e979bcf07dd60125a56)
46
43
 
47
44
  Author: `John Haugeland <stonecypher@gmail.com>`
48
45
 
49
- * Hooks can change data, fixes StoneCypher/fsl#932
46
+ * Post global action hook, fixes StoneCypher/fsl#905; post any action hook, fixes StoneCypher/fsl#906
50
47
 
51
48
 
52
49
 
@@ -55,13 +52,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
55
52
 
56
53
  &nbsp;
57
54
 
58
- ## [Untagged] - 6/25/2022 7:15:46 AM
55
+ ## [Untagged] - 7/1/2022 4:03:56 PM
59
56
 
60
- Commit [fb82aff27a911a29304c8b7c211e48c1b6ac454e](https://github.com/StoneCypher/jssm/commit/fb82aff27a911a29304c8b7c211e48c1b6ac454e)
57
+ Commit [e5bfa2acf8edefe9322bd17540307ffb1f9eeb4d](https://github.com/StoneCypher/jssm/commit/e5bfa2acf8edefe9322bd17540307ffb1f9eeb4d)
61
58
 
62
59
  Author: `John Haugeland <stonecypher@gmail.com>`
63
60
 
64
- * prepping to test main and forced
61
+ * Adds call points in set_hook for basic post-hooks, fixes #958
65
62
 
66
63
 
67
64
 
@@ -70,13 +67,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
70
67
 
71
68
  &nbsp;
72
69
 
73
- ## [Untagged] - 6/25/2022 7:05:36 AM
70
+ ## [Untagged] - 6/30/2022 6:03:58 PM
74
71
 
75
- Commit [3ffc6c2a0b76d1a4870cd80a0f94d745e1c976c9](https://github.com/StoneCypher/jssm/commit/3ffc6c2a0b76d1a4870cd80a0f94d745e1c976c9)
72
+ Commit [bb3c0014580c940b1294e19e64ac432c44bb7081](https://github.com/StoneCypher/jssm/commit/bb3c0014580c940b1294e19e64ac432c44bb7081)
76
73
 
77
74
  Author: `John Haugeland <stonecypher@gmail.com>`
78
75
 
79
- * everything now tested but standard and main
76
+ * Adds posthook path; fixes StoneCypher/fsl#956. Clones datastructures; fixes StoneCypher/fsl#957.
80
77
 
81
78
 
82
79
 
@@ -85,13 +82,15 @@ Author: `John Haugeland <stonecypher@gmail.com>`
85
82
 
86
83
  &nbsp;
87
84
 
88
- ## [Untagged] - 6/25/2022 6:50:50 AM
85
+ <a name="5__73__1" />
86
+
87
+ ## [5.73.1] - 6/27/2022 2:54:25 AM
89
88
 
90
- Commit [e74cb836ae9c06a3261658ee969506c8dd3c9a24](https://github.com/StoneCypher/jssm/commit/e74cb836ae9c06a3261658ee969506c8dd3c9a24)
89
+ Commit [89b9c2cecceee0ea04471c7c406ece82ff115555](https://github.com/StoneCypher/jssm/commit/89b9c2cecceee0ea04471c7c406ece82ff115555)
91
90
 
92
91
  Author: `John Haugeland <stonecypher@gmail.com>`
93
92
 
94
- * six data kinds tested
93
+ * promote circular_queue_js to dep instead of devdep for downstreams
95
94
 
96
95
 
97
96
 
@@ -100,13 +99,18 @@ Author: `John Haugeland <stonecypher@gmail.com>`
100
99
 
101
100
  &nbsp;
102
101
 
103
- ## [Untagged] - 6/24/2022 9:24:32 PM
102
+ <a name="5__73__0" />
103
+
104
+ ## [5.73.0] - 6/27/2022 2:36:36 AM
104
105
 
105
- Commit [df34e0fd36d969bcb80488c6609d6bf4140b89a4](https://github.com/StoneCypher/jssm/commit/df34e0fd36d969bcb80488c6609d6bf4140b89a4)
106
+ Commit [39f9a8671a45e1e9a903289431bc3bc7a1e292e5](https://github.com/StoneCypher/jssm/commit/39f9a8671a45e1e9a903289431bc3bc7a1e292e5)
106
107
 
107
108
  Author: `John Haugeland <stonecypher@gmail.com>`
108
109
 
109
- * working test matrix
110
+ Merges [f1a61f1, c494012]
111
+
112
+ * Merge pull request #504 from StoneCypher/AddHistoryAndCircularBuffer
113
+ * Working history, fixes StoneCypher/fsl#950, fixes StoneCypher/fsl#951,fixes StoneCypher/fsl#948, fixes StoneCypher/fsl#949, fixes StoneCypher/fsl#947, fixes StoneCypher/fsl#946, fixes StoneCypher/fsl#203
110
114
 
111
115
 
112
116
 
@@ -115,13 +119,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
115
119
 
116
120
  &nbsp;
117
121
 
118
- ## [Untagged] - 6/24/2022 8:34:59 PM
122
+ ## [Untagged] - 6/27/2022 2:30:06 AM
119
123
 
120
- Commit [8db075dcd9a135e6757a11c5e497130bb3edb6a9](https://github.com/StoneCypher/jssm/commit/8db075dcd9a135e6757a11c5e497130bb3edb6a9)
124
+ Commit [c494012f33a608ae32bc31581549281abc98f120](https://github.com/StoneCypher/jssm/commit/c494012f33a608ae32bc31581549281abc98f120)
121
125
 
122
126
  Author: `John Haugeland <stonecypher@gmail.com>`
123
127
 
124
- * Hooks now change data on basic transitions, moving to handle the rest
128
+ * Working history, fixes StoneCypher/fsl#950, fixes StoneCypher/fsl#951, fixes StoneCypher/fsl#948, fixes StoneCypher/fsl#949, fixes StoneCypher/fsl#947, fixes StoneCypher/fsl#946, fixes StoneCypher/fsl#203
125
129
 
126
130
 
127
131
 
@@ -130,18 +134,18 @@ Author: `John Haugeland <stonecypher@gmail.com>`
130
134
 
131
135
  &nbsp;
132
136
 
133
- <a name="5__72__3" />
137
+ <a name="5__72__5" />
134
138
 
135
- ## [5.72.3] - 6/24/2022 7:48:13 PM
139
+ ## [5.72.5] - 6/25/2022 11:07:29 AM
136
140
 
137
- Commit [a1843247eb5c063910643f675f0a85764f3f3683](https://github.com/StoneCypher/jssm/commit/a1843247eb5c063910643f675f0a85764f3f3683)
141
+ Commit [f1a61f1e967df66b87f2b6b39f75636659f496e9](https://github.com/StoneCypher/jssm/commit/f1a61f1e967df66b87f2b6b39f75636659f496e9)
138
142
 
139
143
  Author: `John Haugeland <stonecypher@gmail.com>`
140
144
 
141
- Merges [b0cbe1c, d52217a]
145
+ Merges [dc3096f, 751c5fd]
142
146
 
143
- * Merge pull request #501 from StoneCypher/MovingToAbstractHooks
144
- * Moving to abstract hooks
147
+ * Merge pull request #503 from StoneCypher/AttemptToCaptureTestResults
148
+ * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
145
149
 
146
150
 
147
151
 
@@ -150,13 +154,13 @@ Merges [b0cbe1c, d52217a]
150
154
 
151
155
  &nbsp;
152
156
 
153
- ## [Untagged] - 6/24/2022 7:44:55 PM
157
+ ## [Untagged] - 6/25/2022 11:04:20 AM
154
158
 
155
- Commit [d52217ab9dde2a5746cd0704597d337362057024](https://github.com/StoneCypher/jssm/commit/d52217ab9dde2a5746cd0704597d337362057024)
159
+ Commit [751c5fd0cc8c9751331e664e8f51af34f736ce31](https://github.com/StoneCypher/jssm/commit/751c5fd0cc8c9751331e664e8f51af34f736ce31)
156
160
 
157
161
  Author: `John Haugeland <stonecypher@gmail.com>`
158
162
 
159
- * Basic conversion to abstract hooks complete; fixes StoneCypher/fsl#931
163
+ * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
160
164
 
161
165
 
162
166
 
@@ -165,10 +169,15 @@ Author: `John Haugeland <stonecypher@gmail.com>`
165
169
 
166
170
  &nbsp;
167
171
 
168
- ## [Untagged] - 6/24/2022 7:36:27 PM
172
+ <a name="5__72__4" />
173
+
174
+ ## [5.72.4] - 6/25/2022 8:12:11 AM
169
175
 
170
- Commit [adfa9069ba5e78d8a227896a5f7e14a8f4b80117](https://github.com/StoneCypher/jssm/commit/adfa9069ba5e78d8a227896a5f7e14a8f4b80117)
176
+ Commit [dc3096f064e58ea616899b12d3d25c973f326c1c](https://github.com/StoneCypher/jssm/commit/dc3096f064e58ea616899b12d3d25c973f326c1c)
171
177
 
172
178
  Author: `John Haugeland <stonecypher@gmail.com>`
173
179
 
174
- * the conversion continues
180
+ Merges [a184324, 8762d17]
181
+
182
+ * Merge pull request #502 from StoneCypher/AllowHooksToChangeData
183
+ * Allow hooks to change data
package/README.md CHANGED
@@ -18,14 +18,14 @@ 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.72.5 at 6/25/2022, 10:53:38 AM
21
+ * Generated for version 5.74.0 at 7/2/2022, 11:31:46 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,611 tests***.
28
+ share online. Easy to embed. ***4,646 tests***.
29
29
 
30
30
  Readable, useful state machines as one-liner strings.
31
31
 
@@ -1,4 +1,5 @@
1
1
  declare type StateType = string;
2
+ import { circular_buffer } from 'circular_buffer_js';
2
3
  import { JssmGenericState, JssmGenericConfig, JssmTransition, JssmTransitionList, // JssmTransitionRule,
3
4
  JssmMachineInternalState, JssmParseTree, JssmStateDeclaration, JssmArrow, JssmArrowDirection, JssmArrowKind, JssmLayout, FslDirection, FslTheme, HookDescription, HookHandler, HookContext, HookResult, HookComplexResult } from './jssm_types';
4
5
  import { seq, weighted_rand_select, weighted_sample_select, histograph, weighted_histo_key } from './jssm_util';
@@ -233,7 +234,26 @@ declare class Machine<mDT> {
233
234
  _main_transition_hook: HookHandler<mDT> | undefined;
234
235
  _forced_transition_hook: HookHandler<mDT> | undefined;
235
236
  _any_transition_hook: HookHandler<mDT> | undefined;
236
- 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, data }: JssmGenericConfig<mDT>);
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;
254
+ _history: circular_buffer<[StateType, mDT]>;
255
+ _history_length: number;
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>);
237
257
  /********
238
258
  *
239
259
  * Internal method for fabricating states. Not meant for external use.
@@ -549,8 +569,100 @@ declare class Machine<mDT> {
549
569
  hook_any_transition(handler: HookHandler<mDT>): Machine<mDT>;
550
570
  hook_entry(to: string, handler: HookHandler<mDT>): Machine<mDT>;
551
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>;
552
582
  edges_between(from: string, to: string): JssmTransition<mDT>[];
553
583
  transition_impl(newStateOrAction: StateType, newData: mDT | undefined, wasForced: boolean, wasAction: boolean): boolean;
584
+ /*********
585
+ *
586
+ * Get a truncated history of the recent states and data of the machine.
587
+ * Turned off by default; configure with `.from('...', {data: 5})` by length,
588
+ * or set `.history_length` at runtime.
589
+ *
590
+ * History *does not contain the current state*. If you want that, call
591
+ * `.history_inclusive` instead.
592
+ *
593
+ * ```typescript
594
+ * const foo = jssm.from(
595
+ * "a 'next' -> b 'next' -> c 'next' -> d 'next' -> e;",
596
+ * { history: 3 }
597
+ * );
598
+ *
599
+ * foo.action('next');
600
+ * foo.action('next');
601
+ * foo.action('next');
602
+ * foo.action('next');
603
+ *
604
+ * foo.history; // [ ['b',undefined], ['c',undefined], ['d',undefined] ]
605
+ * ```
606
+ *
607
+ * Notice that the machine's current state, `e`, is not in the returned list.
608
+ *
609
+ * @typeparam mDT The type of the machine data member; usually omitted
610
+ *
611
+ */
612
+ get history(): [string, mDT][];
613
+ /*********
614
+ *
615
+ * Get a truncated history of the recent states and data of the machine,
616
+ * including the current state. Turned off by default; configure with
617
+ * `.from('...', {data: 5})` by length, or set `.history_length` at runtime.
618
+ *
619
+ * History inclusive contains the current state. If you only want past
620
+ * states, call `.history` instead.
621
+ *
622
+ * The list returned will be one longer than the history buffer kept, as the
623
+ * history buffer kept gets the current state added to it to produce this
624
+ * list.
625
+ *
626
+ * ```typescript
627
+ * const foo = jssm.from(
628
+ * "a 'next' -> b 'next' -> c 'next' -> d 'next' -> e;",
629
+ * { history: 3 }
630
+ * );
631
+ *
632
+ * foo.action('next');
633
+ * foo.action('next');
634
+ * foo.action('next');
635
+ * foo.action('next');
636
+ *
637
+ * foo.history_inclusive; // [ ['b',undefined], ['c',undefined], ['d',undefined], ['e',undefined] ]
638
+ * ```
639
+ *
640
+ * Notice that the machine's current state, `e`, is in the returned list.
641
+ *
642
+ * @typeparam mDT The type of the machine data member; usually omitted
643
+ *
644
+ */
645
+ get history_inclusive(): [string, mDT][];
646
+ /*********
647
+ *
648
+ * Find out how long a history this machine is keeping. Defaults to zero.
649
+ * Settable directly.
650
+ *
651
+ * ```typescript
652
+ * const foo = jssm.from("a -> b;");
653
+ * foo.history_length; // 0
654
+ *
655
+ * const bar = jssm.from("a -> b;", { history: 3 });
656
+ * foo.history_length; // 3
657
+ * foo.history_length = 5;
658
+ * foo.history_length; // 5
659
+ * ```
660
+ *
661
+ * @typeparam mDT The type of the machine data member; usually omitted
662
+ *
663
+ */
664
+ get history_length(): number;
665
+ set history_length(to: number);
554
666
  /********
555
667
  *
556
668
  * Instruct the machine to complete an action.