jssm 5.73.1 → 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
- 935 merges; 123 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__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__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__73__0" />
26
-
27
- ## [5.73.0] - 6/27/2022 2:36:36 AM
25
+ ## [Untagged] - 7/2/2022 11:04:51 AM
28
26
 
29
- Commit [39f9a8671a45e1e9a903289431bc3bc7a1e292e5](https://github.com/StoneCypher/jssm/commit/39f9a8671a45e1e9a903289431bc3bc7a1e292e5)
27
+ Commit [0222ce4624e1463b875bbb68292a39b438f267a3](https://github.com/StoneCypher/jssm/commit/0222ce4624e1463b875bbb68292a39b438f267a3)
30
28
 
31
29
  Author: `John Haugeland <stonecypher@gmail.com>`
32
30
 
33
- Merges [f1a61f1, c494012]
34
-
35
- * Merge pull request #504 from StoneCypher/AddHistoryAndCircularBuffer
36
- * 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
31
+ * Nicely tied up, basic set_hook posthooks, all simply tested
37
32
 
38
33
 
39
34
 
@@ -42,13 +37,13 @@ Merges [f1a61f1, c494012]
42
37
 
43
38
  &nbsp;
44
39
 
45
- ## [Untagged] - 6/27/2022 2:30:06 AM
40
+ ## [Untagged] - 7/1/2022 4:56:32 PM
46
41
 
47
- Commit [c494012f33a608ae32bc31581549281abc98f120](https://github.com/StoneCypher/jssm/commit/c494012f33a608ae32bc31581549281abc98f120)
42
+ Commit [99847f8ef8c60b521c6d3e979bcf07dd60125a56](https://github.com/StoneCypher/jssm/commit/99847f8ef8c60b521c6d3e979bcf07dd60125a56)
48
43
 
49
44
  Author: `John Haugeland <stonecypher@gmail.com>`
50
45
 
51
- * 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
46
+ * Post global action hook, fixes StoneCypher/fsl#905; post any action hook, fixes StoneCypher/fsl#906
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__5" />
55
+ ## [Untagged] - 7/1/2022 4:03:56 PM
61
56
 
62
- ## [5.72.5] - 6/25/2022 11:07:29 AM
63
-
64
- Commit [f1a61f1e967df66b87f2b6b39f75636659f496e9](https://github.com/StoneCypher/jssm/commit/f1a61f1e967df66b87f2b6b39f75636659f496e9)
57
+ Commit [e5bfa2acf8edefe9322bd17540307ffb1f9eeb4d](https://github.com/StoneCypher/jssm/commit/e5bfa2acf8edefe9322bd17540307ffb1f9eeb4d)
65
58
 
66
59
  Author: `John Haugeland <stonecypher@gmail.com>`
67
60
 
68
- Merges [dc3096f, 751c5fd]
69
-
70
- * Merge pull request #503 from StoneCypher/AttemptToCaptureTestResults
71
- * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
61
+ * Adds call points in set_hook for basic post-hooks, fixes #958
72
62
 
73
63
 
74
64
 
@@ -77,13 +67,13 @@ Merges [dc3096f, 751c5fd]
77
67
 
78
68
  &nbsp;
79
69
 
80
- ## [Untagged] - 6/25/2022 11:04:20 AM
70
+ ## [Untagged] - 6/30/2022 6:03:58 PM
81
71
 
82
- Commit [751c5fd0cc8c9751331e664e8f51af34f736ce31](https://github.com/StoneCypher/jssm/commit/751c5fd0cc8c9751331e664e8f51af34f736ce31)
72
+ Commit [bb3c0014580c940b1294e19e64ac432c44bb7081](https://github.com/StoneCypher/jssm/commit/bb3c0014580c940b1294e19e64ac432c44bb7081)
83
73
 
84
74
  Author: `John Haugeland <stonecypher@gmail.com>`
85
75
 
86
- * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
76
+ * Adds posthook path; fixes StoneCypher/fsl#956. Clones datastructures; fixes StoneCypher/fsl#957.
87
77
 
88
78
 
89
79
 
@@ -92,18 +82,15 @@ Author: `John Haugeland <stonecypher@gmail.com>`
92
82
 
93
83
  &nbsp;
94
84
 
95
- <a name="5__72__4" />
85
+ <a name="5__73__1" />
96
86
 
97
- ## [5.72.4] - 6/25/2022 8:12:11 AM
87
+ ## [5.73.1] - 6/27/2022 2:54:25 AM
98
88
 
99
- Commit [dc3096f064e58ea616899b12d3d25c973f326c1c](https://github.com/StoneCypher/jssm/commit/dc3096f064e58ea616899b12d3d25c973f326c1c)
89
+ Commit [89b9c2cecceee0ea04471c7c406ece82ff115555](https://github.com/StoneCypher/jssm/commit/89b9c2cecceee0ea04471c7c406ece82ff115555)
100
90
 
101
91
  Author: `John Haugeland <stonecypher@gmail.com>`
102
92
 
103
- Merges [a184324, 8762d17]
104
-
105
- * Merge pull request #502 from StoneCypher/AllowHooksToChangeData
106
- * Allow hooks to change data
93
+ * promote circular_queue_js to dep instead of devdep for downstreams
107
94
 
108
95
 
109
96
 
@@ -112,13 +99,18 @@ Merges [a184324, 8762d17]
112
99
 
113
100
  &nbsp;
114
101
 
115
- ## [Untagged] - 6/25/2022 8:08:38 AM
102
+ <a name="5__73__0" />
116
103
 
117
- Commit [8762d17bd69cdf48f522dbd6ee188f46e29a0c06](https://github.com/StoneCypher/jssm/commit/8762d17bd69cdf48f522dbd6ee188f46e29a0c06)
104
+ ## [5.73.0] - 6/27/2022 2:36:36 AM
105
+
106
+ Commit [39f9a8671a45e1e9a903289431bc3bc7a1e292e5](https://github.com/StoneCypher/jssm/commit/39f9a8671a45e1e9a903289431bc3bc7a1e292e5)
118
107
 
119
108
  Author: `John Haugeland <stonecypher@gmail.com>`
120
109
 
121
- * Hooks can change data, fixes StoneCypher/fsl#932
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
122
114
 
123
115
 
124
116
 
@@ -127,13 +119,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
127
119
 
128
120
  &nbsp;
129
121
 
130
- ## [Untagged] - 6/25/2022 7:15:46 AM
122
+ ## [Untagged] - 6/27/2022 2:30:06 AM
131
123
 
132
- Commit [fb82aff27a911a29304c8b7c211e48c1b6ac454e](https://github.com/StoneCypher/jssm/commit/fb82aff27a911a29304c8b7c211e48c1b6ac454e)
124
+ Commit [c494012f33a608ae32bc31581549281abc98f120](https://github.com/StoneCypher/jssm/commit/c494012f33a608ae32bc31581549281abc98f120)
133
125
 
134
126
  Author: `John Haugeland <stonecypher@gmail.com>`
135
127
 
136
- * prepping to test main and forced
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
137
129
 
138
130
 
139
131
 
@@ -142,13 +134,18 @@ Author: `John Haugeland <stonecypher@gmail.com>`
142
134
 
143
135
  &nbsp;
144
136
 
145
- ## [Untagged] - 6/25/2022 7:05:36 AM
137
+ <a name="5__72__5" />
146
138
 
147
- Commit [3ffc6c2a0b76d1a4870cd80a0f94d745e1c976c9](https://github.com/StoneCypher/jssm/commit/3ffc6c2a0b76d1a4870cd80a0f94d745e1c976c9)
139
+ ## [5.72.5] - 6/25/2022 11:07:29 AM
140
+
141
+ Commit [f1a61f1e967df66b87f2b6b39f75636659f496e9](https://github.com/StoneCypher/jssm/commit/f1a61f1e967df66b87f2b6b39f75636659f496e9)
148
142
 
149
143
  Author: `John Haugeland <stonecypher@gmail.com>`
150
144
 
151
- * everything now tested but standard and main
145
+ Merges [dc3096f, 751c5fd]
146
+
147
+ * Merge pull request #503 from StoneCypher/AttemptToCaptureTestResults
148
+ * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
152
149
 
153
150
 
154
151
 
@@ -157,13 +154,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
157
154
 
158
155
  &nbsp;
159
156
 
160
- ## [Untagged] - 6/25/2022 6:50:50 AM
157
+ ## [Untagged] - 6/25/2022 11:04:20 AM
161
158
 
162
- Commit [e74cb836ae9c06a3261658ee969506c8dd3c9a24](https://github.com/StoneCypher/jssm/commit/e74cb836ae9c06a3261658ee969506c8dd3c9a24)
159
+ Commit [751c5fd0cc8c9751331e664e8f51af34f736ce31](https://github.com/StoneCypher/jssm/commit/751c5fd0cc8c9751331e664e8f51af34f736ce31)
163
160
 
164
161
  Author: `John Haugeland <stonecypher@gmail.com>`
165
162
 
166
- * six data kinds tested
163
+ * Captures test results, fixes StoneCypher/fsl#944, tools readme, fixes StoneCypher/fsl#736
167
164
 
168
165
 
169
166
 
@@ -172,10 +169,15 @@ Author: `John Haugeland <stonecypher@gmail.com>`
172
169
 
173
170
  &nbsp;
174
171
 
175
- ## [Untagged] - 6/24/2022 9:24:32 PM
172
+ <a name="5__72__4" />
173
+
174
+ ## [5.72.4] - 6/25/2022 8:12:11 AM
176
175
 
177
- Commit [df34e0fd36d969bcb80488c6609d6bf4140b89a4](https://github.com/StoneCypher/jssm/commit/df34e0fd36d969bcb80488c6609d6bf4140b89a4)
176
+ Commit [dc3096f064e58ea616899b12d3d25c973f326c1c](https://github.com/StoneCypher/jssm/commit/dc3096f064e58ea616899b12d3d25c973f326c1c)
178
177
 
179
178
  Author: `John Haugeland <stonecypher@gmail.com>`
180
179
 
181
- * working test matrix
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.73.1 at 6/27/2022, 2:52:26 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,617 tests***.
28
+ share online. Easy to embed. ***4,646 tests***.
29
29
 
30
30
  Readable, useful state machines as one-liner strings.
31
31
 
@@ -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.1";
1
+ const version = "5.74.0";
2
2
  export { version };