jssm 5.143.9 → 5.143.10

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/README.md CHANGED
@@ -18,10 +18,10 @@ 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.143.9 at 6/12/2026, 2:37:21 AM
21
+ * Generated for version 5.143.10 at 6/12/2026, 8:06:22 AM
22
22
 
23
23
  -->
24
- # jssm 5.143.9
24
+ # jssm 5.143.10
25
25
 
26
26
  [**Try the live editor**](https://stonecypher.github.io/jssm-viz-demo/graph_explorer.html) ·
27
27
  [Documentation](https://stonecypher.github.io/jssm/docs/) ·
@@ -281,7 +281,7 @@ That decision shows up everywhere downstream:
281
281
  or run `npm run benny` against your own machine.
282
282
 
283
283
  - **More thoroughly tested than any other JavaScript state-machine
284
- library.** 6,734 tests at 100.0% line coverage
284
+ library.** 6,902 tests at 100.0% line coverage
285
285
  ([report](https://coveralls.io/github/StoneCypher/jssm)), plus
286
286
  fuzz testing via `fast-check`, with parser test data across ten natural
287
287
  languages and Emoji.
@@ -414,11 +414,11 @@ If your contribution is missing here, please open an issue.
414
414
 
415
415
  <br/>
416
416
 
417
- ***6,734 tests***, run 58,808 times.
417
+ ***6,902 tests***, run 75,608 times.
418
418
 
419
419
  - 6,208 specs with 100.0% coverage
420
- - 526 fuzz tests with 3.3% coverage
421
- - 5,805 TypeScript lines - 1.2 tests per line, 10.1 generated tests per line
420
+ - 694 fuzz tests with 63.5% coverage
421
+ - 5,805 TypeScript lines - 1.2 tests per line, 13.0 generated tests per line
422
422
 
423
423
  [![Actions Status](https://github.com/StoneCypher/jssm/workflows/Node%20CI/badge.svg)](https://github.com/StoneCypher/jssm/actions)
424
424
  [![NPM version](https://img.shields.io/npm/v/jssm.svg)](https://www.npmjs.com/package/jssm)
@@ -22675,7 +22675,7 @@ var constants = /*#__PURE__*/Object.freeze({
22675
22675
  * Useful for runtime diagnostics and for embedding in serialized machine
22676
22676
  * snapshots so that deserializers can detect version-skew.
22677
22677
  */
22678
- const version = "5.143.9";
22678
+ const version = "5.143.10";
22679
22679
 
22680
22680
  // whargarbl lots of these return arrays could/should be sets
22681
22681
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
@@ -25494,9 +25494,13 @@ class Machine {
25494
25494
  const fromState = this._state;
25495
25495
  const oldData = this._data;
25496
25496
  if (valid) {
25497
+ // once validity is known, clear old 'after' timeout clause. This must
25498
+ // happen for hook-free machines too: leaving it inside the hooks branch
25499
+ // let a pending 'after' timer survive a manual transition away, firing a
25500
+ // ghost go() later and crashing re-entry to the after-state with
25501
+ // "already timing out".
25502
+ this.clear_state_timeout();
25497
25503
  if (this._has_hooks) {
25498
- // once validity is known, clear old 'after' timeout clause
25499
- this.clear_state_timeout();
25500
25504
  let data_changed = false;
25501
25505
  // 0. pre everything hook (fires before all other pre-hooks)
25502
25506
  if (this._pre_everything_hook !== undefined) {
package/dist/cdn/viz.js CHANGED
@@ -22700,7 +22700,7 @@ var constants = /*#__PURE__*/Object.freeze({
22700
22700
  * Useful for runtime diagnostics and for embedding in serialized machine
22701
22701
  * snapshots so that deserializers can detect version-skew.
22702
22702
  */
22703
- const version = "5.143.9";
22703
+ const version = "5.143.10";
22704
22704
 
22705
22705
  // whargarbl lots of these return arrays could/should be sets
22706
22706
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
@@ -25519,9 +25519,13 @@ class Machine {
25519
25519
  const fromState = this._state;
25520
25520
  const oldData = this._data;
25521
25521
  if (valid) {
25522
+ // once validity is known, clear old 'after' timeout clause. This must
25523
+ // happen for hook-free machines too: leaving it inside the hooks branch
25524
+ // let a pending 'after' timer survive a manual transition away, firing a
25525
+ // ghost go() later and crashing re-entry to the after-state with
25526
+ // "already timing out".
25527
+ this.clear_state_timeout();
25522
25528
  if (this._has_hooks) {
25523
- // once validity is known, clear old 'after' timeout clause
25524
- this.clear_state_timeout();
25525
25529
  let data_changed = false;
25526
25530
  // 0. pre everything hook (fires before all other pre-hooks)
25527
25531
  if (this._pre_everything_hook !== undefined) {