jssm 5.86.1 → 5.86.3

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
- 1067 merges; 173 releases; Changlogging the last 10 commits; Full changelog at [CHANGELOG.long.md](CHANGELOG.long.md)
5
+ 1070 merges; 176 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__85__11">5.85.11</a>, <a href="#5__85__10">5.85.10</a>, <a href="#5__85__9">5.85.9</a>, <a href="#5__85__8">5.85.8</a>, <a href="#5__85__7">5.85.7</a>, <a href="#5__85__6">5.85.6</a>, <a href="#5__85__5">5.85.5</a>, <a href="#5__85__4">5.85.4</a>, <a href="#5__85__3">5.85.3</a>, <a href="#5__85__2">5.85.2</a>, <a href="#5__85__1">5.85.1</a>, <a href="#5__85__0">5.85.0</a>, <a href="#5__84__1">5.84.1</a>, <a href="#5__84__0">5.84.0</a>, <a href="#5__83__2">5.83.2</a>, <a href="#5__83__1">5.83.1</a>, <a href="#5__83__0">5.83.0</a>, <a href="#5__82__5">5.82.5</a>, <a href="#5__82__4">5.82.4</a>, <a href="#5__82__3">5.82.3</a>, <a href="#5__82__2">5.82.2</a>, <a href="#5__82__1">5.82.1</a>, <a href="#5__82__0">5.82.0</a>, <a href="#5__81__2">5.81.2</a>, <a href="#5__81__0">5.81.0</a>, <a href="#5__80__1">5.80.1</a>, <a href="#5__80__0">5.80.0</a>, <a href="#5__79__18">5.79.18</a>, <a href="#5__79__17">5.79.17</a>, <a href="#5__79__16">5.79.16</a>, <a href="#5__79__15">5.79.15</a>, <a href="#5__79__11">5.79.11</a>, <a href="#5__79__10">5.79.10</a>, <a href="#5__79__9">5.79.9</a>, <a href="#5__79__8">5.79.8</a>, <a href="#5__79__6">5.79.6</a>, <a href="#5__79__4">5.79.4</a>, <a href="#5__79__3">5.79.3</a>, <a href="#5__79__2">5.79.2</a>, <a href="#5__79__1">5.79.1</a>, <a href="#5__79__0">5.79.0</a>, <a href="#5__78__0">5.78.0</a>, <a href="#5__77__1">5.77.1</a>, <a href="#5__77__0">5.77.0</a>, <a href="#5__76__2">5.76.2</a>, <a href="#5__76__0">5.76.0</a>, <a href="#5__75__1">5.75.1</a>, <a href="#5__75__0">5.75.0</a>, <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>
15
+ <a href="#5__86__2">5.86.2</a>, <a href="#5__86__1">5.86.1</a>, <a href="#5__86__0">5.86.0</a>, <a href="#5__85__11">5.85.11</a>, <a href="#5__85__10">5.85.10</a>, <a href="#5__85__9">5.85.9</a>, <a href="#5__85__8">5.85.8</a>, <a href="#5__85__7">5.85.7</a>, <a href="#5__85__6">5.85.6</a>, <a href="#5__85__5">5.85.5</a>, <a href="#5__85__4">5.85.4</a>, <a href="#5__85__3">5.85.3</a>, <a href="#5__85__2">5.85.2</a>, <a href="#5__85__1">5.85.1</a>, <a href="#5__85__0">5.85.0</a>, <a href="#5__84__1">5.84.1</a>, <a href="#5__84__0">5.84.0</a>, <a href="#5__83__2">5.83.2</a>, <a href="#5__83__1">5.83.1</a>, <a href="#5__83__0">5.83.0</a>, <a href="#5__82__5">5.82.5</a>, <a href="#5__82__4">5.82.4</a>, <a href="#5__82__3">5.82.3</a>, <a href="#5__82__2">5.82.2</a>, <a href="#5__82__1">5.82.1</a>, <a href="#5__82__0">5.82.0</a>, <a href="#5__81__2">5.81.2</a>, <a href="#5__81__0">5.81.0</a>, <a href="#5__80__1">5.80.1</a>, <a href="#5__80__0">5.80.0</a>, <a href="#5__79__18">5.79.18</a>, <a href="#5__79__17">5.79.17</a>, <a href="#5__79__16">5.79.16</a>, <a href="#5__79__15">5.79.15</a>, <a href="#5__79__11">5.79.11</a>, <a href="#5__79__10">5.79.10</a>, <a href="#5__79__9">5.79.9</a>, <a href="#5__79__8">5.79.8</a>, <a href="#5__79__6">5.79.6</a>, <a href="#5__79__4">5.79.4</a>, <a href="#5__79__3">5.79.3</a>, <a href="#5__79__2">5.79.2</a>, <a href="#5__79__1">5.79.1</a>, <a href="#5__79__0">5.79.0</a>, <a href="#5__78__0">5.78.0</a>, <a href="#5__77__1">5.77.1</a>, <a href="#5__77__0">5.77.0</a>, <a href="#5__76__2">5.76.2</a>, <a href="#5__76__0">5.76.0</a>, <a href="#5__75__1">5.75.1</a>, <a href="#5__75__0">5.75.0</a>, <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,7 +22,62 @@ Published tags:
22
22
 
23
23
  &nbsp;
24
24
 
25
- ## [Untagged] - 11/11/2022 6:22:48 PM
25
+ <a name="5__86__2" />
26
+
27
+ ## [5.86.2] - 11/12/2022 12:49:23 PM
28
+
29
+ Commit [a033eb38e784cbc5c6bf15bef576b69bb935f9b2](https://github.com/StoneCypher/jssm/commit/a033eb38e784cbc5c6bf15bef576b69bb935f9b2)
30
+
31
+ Author: `John Haugeland <stonecypher@gmail.com>`
32
+
33
+ Merges [48b4f92, 99a5fd6]
34
+
35
+ * Merge pull request #548 from StoneCypher/AllowsOverrideInCompiler
36
+ * allows override in compiler, constructor config to allow/disallow override, getters for override, cfg override, machine override
37
+
38
+
39
+
40
+
41
+ &nbsp;
42
+
43
+ &nbsp;
44
+
45
+ ## [Untagged] - 11/12/2022 12:44:20 PM
46
+
47
+ Commit [99a5fd66ee5a342814cf34d89fb6dccc2f4ac7e9](https://github.com/StoneCypher/jssm/commit/99a5fd66ee5a342814cf34d89fb6dccc2f4ac7e9)
48
+
49
+ Author: `John Haugeland <stonecypher@gmail.com>`
50
+
51
+ * allows override in compiler, constructor config to allow/disallow override, getters for override, cfg override, machine override
52
+ * fixes StoneCypher/fsl#1225, fixes StoneCypher/fsl#1227, fixes StoneCypher/fsl#1229, fixes StoneCypher/fsl#1230, fixes StoneCypher/fsl#1231
53
+
54
+
55
+
56
+
57
+ &nbsp;
58
+
59
+ &nbsp;
60
+
61
+ <a name="5__86__1" />
62
+
63
+ ## [5.86.1] - 11/11/2022 6:41:15 PM
64
+
65
+ Commit [48b4f928eb1a4597122b64e6eea38a57c19a112f](https://github.com/StoneCypher/jssm/commit/48b4f928eb1a4597122b64e6eea38a57c19a112f)
66
+
67
+ Author: `John Haugeland <stonecypher@gmail.com>`
68
+
69
+ * Allow override attribute in grammar, fixes StoneCypher/fsl#1226
70
+
71
+
72
+
73
+
74
+ &nbsp;
75
+
76
+ &nbsp;
77
+
78
+ <a name="5__86__0" />
79
+
80
+ ## [5.86.0] - 11/11/2022 6:22:48 PM
26
81
 
27
82
  Commit [31077c9256ee31f80398460b3af95bc65a8dbc3a](https://github.com/StoneCypher/jssm/commit/31077c9256ee31f80398460b3af95bc65a8dbc3a)
28
83
 
@@ -138,56 +193,4 @@ Author: `John Haugeland <stonecypher@gmail.com>`
138
193
  Merges [c047caa, 090db83]
139
194
 
140
195
  * Merge pull request #544 from StoneCypher/PullCompilerOutIntoModule
141
- * Pull compiler out into a module
142
-
143
-
144
-
145
-
146
- &nbsp;
147
-
148
- &nbsp;
149
-
150
- ## [Untagged] - 9/12/2022 9:06:27 PM
151
-
152
- Commit [090db831d8df370b0937d2d37e6372b6df030481](https://github.com/StoneCypher/jssm/commit/090db831d8df370b0937d2d37e6372b6df030481)
153
-
154
- Author: `John Haugeland <stonecypher@gmail.com>`
155
-
156
- * Pull compiler out into a module
157
- * Fixes StoneCypher/fsl#1207
158
-
159
-
160
-
161
-
162
- &nbsp;
163
-
164
- &nbsp;
165
-
166
- <a name="5__85__8" />
167
-
168
- ## [5.85.8] - 9/12/2022 8:26:10 PM
169
-
170
- Commit [c047caac3f9d9bb24a9c0b517983088eb8ee2e4a](https://github.com/StoneCypher/jssm/commit/c047caac3f9d9bb24a9c0b517983088eb8ee2e4a)
171
-
172
- Author: `John Haugeland <stonecypher@gmail.com>`
173
-
174
- Merges [581fd8d, 013999a]
175
-
176
- * Merge pull request #543 from StoneCypher/PullArrowsOutIntoModules
177
- * Pull arrows out into modules
178
-
179
-
180
-
181
-
182
- &nbsp;
183
-
184
- &nbsp;
185
-
186
- ## [Untagged] - 9/12/2022 8:18:05 PM
187
-
188
- Commit [013999a77ce43ceed5eb982754ffe480fdddf159](https://github.com/StoneCypher/jssm/commit/013999a77ce43ceed5eb982754ffe480fdddf159)
189
-
190
- Author: `John Haugeland <stonecypher@gmail.com>`
191
-
192
- * Pull arrows out into modules
193
- * Fixes StoneCypher/fsl#1206
196
+ * Pull compiler out into a module
package/README.md CHANGED
@@ -18,7 +18,7 @@ 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.86.1 at 11/11/2022, 6:40:14 PM
21
+ * Generated for version 5.86.3 at 11/12/2022, 6:07:03 PM
22
22
 
23
23
  -->
24
24
  # jssm
@@ -29,7 +29,7 @@ share online. Easy to embed.
29
29
 
30
30
  Readable, useful state machines as one-liner strings.
31
31
 
32
- ***4,878 tests*** run 5,769 times. 4,869 specs with 100.0% coverage, 9 fuzz tests with 13.5% coverage. With 2,766 lines, that's about 1.8 tests per line, or 2.1 generated tests per line.
32
+ ***4,913 tests*** run 5,804 times. 4,904 specs with 100.0% coverage, 9 fuzz tests with 13.2% coverage. With 2,824 lines, that's about 1.7 tests per line, or 2.1 generated tests per line.
33
33
 
34
34
  ***Meet your new state machine library.***
35
35
 
@@ -1,6 +1,6 @@
1
1
  declare type StateType = string;
2
2
  import { JssmGenericState, JssmGenericConfig, JssmStateConfig, JssmTransition, JssmTransitionList, // JssmTransitionRule,
3
- JssmMachineInternalState, JssmStateDeclaration, JssmStateStyleKeyList, JssmLayout, JssmHistory, JssmSerialization, FslDirection, FslDirections, FslTheme, HookDescription, HookHandler, HookContext, HookResult, HookComplexResult } from './jssm_types';
3
+ JssmMachineInternalState, JssmAllowsOverride, JssmStateDeclaration, JssmStateStyleKeyList, JssmLayout, JssmHistory, JssmSerialization, FslDirection, FslDirections, FslTheme, HookDescription, HookHandler, HookContext, HookResult, HookComplexResult } from './jssm_types';
4
4
  import { arrow_direction, arrow_left_kind, arrow_right_kind } from './jssm_arrow';
5
5
  import { compile, make, wrap_parse } from './jssm_compiler';
6
6
  import { seq, unique, find_repeated, weighted_rand_select, weighted_sample_select, histograph, weighted_histo_key } from './jssm_util';
@@ -74,7 +74,8 @@ declare class Machine<mDT> {
74
74
  _has_post_exit_hooks: boolean;
75
75
  _has_post_global_action_hooks: boolean;
76
76
  _has_post_transition_hooks: boolean;
77
- _allows_override: boolean;
77
+ _code_allows_override: JssmAllowsOverride;
78
+ _config_allows_override: JssmAllowsOverride;
78
79
  _post_hooks: Map<string, HookHandler<mDT>>;
79
80
  _post_named_hooks: Map<string, HookHandler<mDT>>;
80
81
  _post_entry_hooks: Map<string, HookHandler<mDT>>;
@@ -98,7 +99,7 @@ declare class Machine<mDT> {
98
99
  _start_state_style: JssmStateConfig;
99
100
  _end_state_style: JssmStateConfig;
100
101
  _state_labels: Map<string, string>;
101
- constructor({ start_states, end_states, complete, transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble, arrange_declaration, arrange_start_declaration, arrange_end_declaration, theme, flow, graph_layout, instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config }: JssmGenericConfig<StateType, mDT>);
102
+ constructor({ start_states, end_states, complete, transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble, arrange_declaration, arrange_start_declaration, arrange_end_declaration, theme, flow, graph_layout, instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override }: JssmGenericConfig<StateType, mDT>);
102
103
  /********
103
104
  *
104
105
  * Internal method for fabricating states. Not meant for external use.
@@ -484,12 +485,24 @@ declare class Machine<mDT> {
484
485
  list_actions(): Array<StateType>;
485
486
  get uses_actions(): boolean;
486
487
  get uses_forced_transitions(): boolean;
488
+ /*********
489
+ *
490
+ * Check if the code that built the machine allows overriding state and data.
491
+ *
492
+ */
493
+ get code_allows_override(): JssmAllowsOverride;
494
+ /*********
495
+ *
496
+ * Check if the machine config allows overriding state and data.
497
+ *
498
+ */
499
+ get config_allows_override(): JssmAllowsOverride;
487
500
  /*********
488
501
  *
489
502
  * Check if a machine allows overriding state and data.
490
503
  *
491
504
  */
492
- get allows_override(): boolean;
505
+ get allows_override(): JssmAllowsOverride;
493
506
  all_themes(): FslTheme[];
494
507
  get themes(): FslTheme | FslTheme[];
495
508
  set themes(to: FslTheme | FslTheme[]);
@@ -656,6 +669,26 @@ declare class Machine<mDT> {
656
669
  post_hook_entry(to: string, handler: HookHandler<mDT>): Machine<mDT>;
657
670
  post_hook_exit(from: string, handler: HookHandler<mDT>): Machine<mDT>;
658
671
  edges_between(from: string, to: string): JssmTransition<StateType, mDT>[];
672
+ /*********
673
+ *
674
+ * Replace the current state and data with no regard to the graph.
675
+ *
676
+ * ```typescript
677
+ * import { sm } from 'jssm';
678
+ *
679
+ * const machine = sm`a -> b -> c;`;
680
+ * console.log( machine.state() ); // 'a'
681
+ *
682
+ * machine.go('b');
683
+ * machine.go('c');
684
+ * console.log( machine.state() ); // 'c'
685
+ *
686
+ * machine.override('a');
687
+ * console.log( machine.state() ); // 'a'
688
+ * ```
689
+ *
690
+ */
691
+ override(newState: StateType, newData?: mDT | undefined): void;
659
692
  transition_impl(newStateOrAction: StateType, newData: mDT | undefined, wasForced: boolean, wasAction: boolean): boolean;
660
693
  /*********
661
694
  *
package/dist/es6/jssm.js CHANGED
@@ -126,7 +126,7 @@ function state_style_condense(jssk) {
126
126
  // TODO add a lotta docblock here
127
127
  class Machine {
128
128
  // whargarbl this badly needs to be broken up, monolith master
129
- constructor({ start_states, end_states = [], complete = [], transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble = undefined, arrange_declaration = [], arrange_start_declaration = [], arrange_end_declaration = [], theme = ['default'], flow = 'down', graph_layout = 'dot', instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config }) {
129
+ constructor({ start_states, end_states = [], complete = [], transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble = undefined, arrange_declaration = [], arrange_start_declaration = [], arrange_end_declaration = [], theme = ['default'], flow = 'down', graph_layout = 'dot', instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override }) {
130
130
  this._instance_name = instance_name;
131
131
  this._state = start_states[0];
132
132
  this._states = new Map();
@@ -183,7 +183,11 @@ class Machine {
183
183
  this._has_post_global_action_hooks = false;
184
184
  this._has_post_transition_hooks = true;
185
185
  // no need for a boolean for single hooks, just test for undefinedness
186
- this._allows_override = false;
186
+ this._code_allows_override = allows_override;
187
+ this._config_allows_override = config_allows_override;
188
+ if ((allows_override === false) && (config_allows_override === true)) {
189
+ throw new JssmError(undefined, "Code specifies no override, but config tries to permit; config may not be less strict than code");
190
+ }
187
191
  this._post_hooks = new Map();
188
192
  this._post_named_hooks = new Map();
189
193
  this._post_entry_hooks = new Map();
@@ -901,13 +905,55 @@ class Machine {
901
905
  get uses_forced_transitions() {
902
906
  return this._has_forced_transitions;
903
907
  }
908
+ /*********
909
+ *
910
+ * Check if the code that built the machine allows overriding state and data.
911
+ *
912
+ */
913
+ get code_allows_override() {
914
+ return this._code_allows_override;
915
+ }
916
+ /*********
917
+ *
918
+ * Check if the machine config allows overriding state and data.
919
+ *
920
+ */
921
+ get config_allows_override() {
922
+ return this._config_allows_override;
923
+ }
904
924
  /*********
905
925
  *
906
926
  * Check if a machine allows overriding state and data.
907
927
  *
908
928
  */
909
929
  get allows_override() {
910
- return this._allows_override === true;
930
+ // code false? config true, throw. config false, false. config undefined, false.
931
+ if (this._code_allows_override === false) {
932
+ /* istanbul ignore next */
933
+ if (this._config_allows_override === true) {
934
+ /* istanbul ignore next */
935
+ throw new JssmError(this, "Code specifies no override, but config tries to permit; config may not be less strict than code; should be unreachable");
936
+ }
937
+ else {
938
+ return false;
939
+ }
940
+ }
941
+ // code true? config true, true. config false, false. config undefined, true.
942
+ if (this._code_allows_override === true) {
943
+ if (this._config_allows_override === false) {
944
+ return false;
945
+ }
946
+ else {
947
+ return true;
948
+ }
949
+ }
950
+ // code must be undefined. config false, false. config true, true. config undefined, false.
951
+ if (this._config_allows_override === true) {
952
+ return true;
953
+ }
954
+ else {
955
+ return false;
956
+ }
911
957
  }
912
958
  all_themes() {
913
959
  return [...theme_mapping.keys()]; // constructor sets this to "default" otherwise
@@ -1379,6 +1425,39 @@ class Machine {
1379
1425
  edges_between(from, to) {
1380
1426
  return this._edges.filter(edge => ((edge.from === from) && (edge.to === to)));
1381
1427
  }
1428
+ /*********
1429
+ *
1430
+ * Replace the current state and data with no regard to the graph.
1431
+ *
1432
+ * ```typescript
1433
+ * import { sm } from 'jssm';
1434
+ *
1435
+ * const machine = sm`a -> b -> c;`;
1436
+ * console.log( machine.state() ); // 'a'
1437
+ *
1438
+ * machine.go('b');
1439
+ * machine.go('c');
1440
+ * console.log( machine.state() ); // 'c'
1441
+ *
1442
+ * machine.override('a');
1443
+ * console.log( machine.state() ); // 'a'
1444
+ * ```
1445
+ *
1446
+ */
1447
+ override(newState, newData) {
1448
+ if (this.allows_override) {
1449
+ if (this._states.has(newState)) {
1450
+ this._state = newState;
1451
+ this._data = newData;
1452
+ }
1453
+ else {
1454
+ throw new JssmError(this, `Cannot override state to "${newState}", a state that does not exist`);
1455
+ }
1456
+ }
1457
+ else {
1458
+ throw new JssmError(this, "Code specifies no override, but config tries to permit; config may not be less strict than code");
1459
+ }
1460
+ }
1382
1461
  transition_impl(newStateOrAction, newData, wasForced, wasAction) {
1383
1462
  // TODO the forced-ness behavior needs to be cleaned up a lot here
1384
1463
  // TODO all the callbacks are wrong on forced, action, etc
@@ -2198,7 +2277,14 @@ function sm(template_strings, ...remainder /* , arguments */) {
2198
2277
  function from(MachineAsString, ExtraConstructorFields) {
2199
2278
  const to_decorate = make(MachineAsString);
2200
2279
  if (ExtraConstructorFields !== undefined) {
2201
- Object.keys(ExtraConstructorFields).map(key => to_decorate[key] = ExtraConstructorFields[key]);
2280
+ Object.keys(ExtraConstructorFields).map(key => {
2281
+ if (key === 'allows_override') {
2282
+ to_decorate['config_allows_override'] = ExtraConstructorFields['allows_override'];
2283
+ }
2284
+ else {
2285
+ to_decorate[key] = ExtraConstructorFields[key];
2286
+ }
2287
+ });
2202
2288
  }
2203
2289
  return new Machine(to_decorate);
2204
2290
  }
@@ -192,9 +192,10 @@ function compile_rule_handler(rule) {
192
192
  'graph_layout', 'start_states', 'end_states', 'machine_name', 'machine_version',
193
193
  'machine_comment', 'machine_author', 'machine_contributor', 'machine_definition',
194
194
  'machine_reference', 'machine_license', 'fsl_version', 'state_config', 'theme',
195
- 'flow', 'dot_preamble', 'default_state_config', 'default_start_state_config',
196
- 'default_end_state_config', 'default_hooked_state_config',
197
- 'default_active_state_config', 'default_terminal_state_config'
195
+ 'flow', 'dot_preamble', 'allows_override', 'default_state_config',
196
+ 'default_start_state_config', 'default_end_state_config',
197
+ 'default_hooked_state_config', 'default_active_state_config',
198
+ 'default_terminal_state_config'
198
199
  ];
199
200
  if (tautologies.includes(rule.key)) {
200
201
  return { agg_as: rule.key, val: rule.value };
@@ -284,6 +285,7 @@ function compile(tree) {
284
285
  default_terminal_state_config: [],
285
286
  default_start_state_config: [],
286
287
  default_end_state_config: [],
288
+ allows_override: []
287
289
  };
288
290
  tree.map((tr) => {
289
291
  const rule = compile_rule_handler(tr), agg_as = rule.agg_as, val = rule.val; // TODO FIXME no any
@@ -303,7 +305,7 @@ function compile(tree) {
303
305
  const oneOnlyKeys = [
304
306
  'graph_layout', 'machine_name', 'machine_version', 'machine_comment',
305
307
  'fsl_version', 'machine_license', 'machine_definition', 'machine_language',
306
- 'flow', 'dot_preamble'
308
+ 'flow', 'dot_preamble', 'allows_override'
307
309
  ];
308
310
  oneOnlyKeys.map((oneOnlyKey) => {
309
311
  if (results[oneOnlyKey].length > 1) {
@@ -24,6 +24,7 @@ declare type JssmArrowKind = 'none' | 'legal' | 'main' | 'forced';
24
24
  declare type JssmLayout = 'dot' | 'circo' | 'twopi' | 'fdp';
25
25
  declare type JssmCorner = 'regular' | 'rounded' | 'lined';
26
26
  declare type JssmLineStyle = 'solid' | 'dashed' | 'dotted';
27
+ declare type JssmAllowsOverride = true | false | undefined;
27
28
  declare const FslDirections: readonly ["up", "right", "down", "left"];
28
29
  declare type FslDirection = typeof FslDirections[number];
29
30
  declare const FslThemes: readonly ["default", "ocean", "modern", "plain", "bold"];
@@ -190,6 +191,8 @@ declare type JssmGenericConfig<StateType, DataType> = {
190
191
  allow_force?: false;
191
192
  actions?: JssmPermittedOpt;
192
193
  simplify_bidi?: boolean;
194
+ allows_override?: JssmAllowsOverride;
195
+ config_allows_override?: JssmAllowsOverride;
193
196
  dot_preamble?: string;
194
197
  start_states: Array<StateType>;
195
198
  end_states?: Array<StateType>;
@@ -354,4 +357,4 @@ declare type JssmErrorExtendedInfo = {
354
357
  requested_state?: StateType | undefined;
355
358
  };
356
359
  declare type JssmHistory<mDT> = circular_buffer<[StateType, mDT]>;
357
- export { JssmColor, JssmShape, JssmTransition, JssmTransitions, JssmTransitionList, JssmTransitionRule, JssmArrow, JssmArrowKind, JssmArrowDirection, JssmGenericConfig, JssmGenericState, JssmGenericMachine, JssmParseTree, JssmCompileSe, JssmCompileSeStart, JssmCompileRule, JssmPermitted, JssmPermittedOpt, JssmResult, JssmStateDeclaration, JssmStateDeclarationRule, JssmStateConfig, JssmStateStyleKey, JssmStateStyleKeyList, JssmBaseTheme, JssmTheme, JssmLayout, JssmHistory, JssmSerialization, JssmPropertyDefinition, JssmParseFunctionType, JssmMachineInternalState, JssmErrorExtendedInfo, FslDirections, FslDirection, FslThemes, FslTheme, HookDescription, HookHandler, HookContext, HookResult, HookComplexResult };
360
+ export { JssmColor, JssmShape, JssmTransition, JssmTransitions, JssmTransitionList, JssmTransitionRule, JssmArrow, JssmArrowKind, JssmArrowDirection, JssmGenericConfig, JssmGenericState, JssmGenericMachine, JssmParseTree, JssmCompileSe, JssmCompileSeStart, JssmCompileRule, JssmPermitted, JssmPermittedOpt, JssmResult, JssmStateDeclaration, JssmStateDeclarationRule, JssmStateConfig, JssmStateStyleKey, JssmStateStyleKeyList, JssmBaseTheme, JssmTheme, JssmLayout, JssmHistory, JssmSerialization, JssmPropertyDefinition, JssmAllowsOverride, JssmParseFunctionType, JssmMachineInternalState, JssmErrorExtendedInfo, FslDirections, FslDirection, FslThemes, FslTheme, HookDescription, HookHandler, HookContext, HookResult, HookComplexResult };
@@ -1,2 +1,2 @@
1
- const version = "5.86.1", build_time = 1668220727832;
1
+ const version = "5.86.3", build_time = 1668305137795;
2
2
  export { version, build_time };