jssm 5.143.5 → 5.143.6

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.5 at 6/11/2026, 7:42:31 PM
21
+ * Generated for version 5.143.6 at 6/11/2026, 7:50:45 PM
22
22
 
23
23
  -->
24
- # jssm 5.143.5
24
+ # jssm 5.143.6
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/) ·
@@ -418,7 +418,7 @@ If your contribution is missing here, please open an issue.
418
418
 
419
419
  - 6,201 specs with 100.0% coverage
420
420
  - 526 fuzz tests with 3.3% coverage
421
- - 5,780 TypeScript lines - 1.2 tests per line, 10.2 generated tests per line
421
+ - 5,782 TypeScript lines - 1.2 tests per line, 10.2 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.5";
22678
+ const version = "5.143.6";
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;
@@ -26613,6 +26613,26 @@ function _update_hook_fields(hook_args, res) {
26613
26613
  }
26614
26614
  return false;
26615
26615
  }
26616
+ /**
26617
+ *
26618
+ * Shared, frozen outcomes for the simple hook results. The transition
26619
+ * cascade runs up to ~10 hook steps per transition, and the overwhelmingly
26620
+ * common results — no hook installed, or a hook returning `undefined` /
26621
+ * `true` / `false` — previously allocated a fresh one-field object each
26622
+ * time, just to have `.pass` read once and be discarded. Callers only read
26623
+ * `pass` and probe for an own `data` property ({@link _update_hook_fields}),
26624
+ * so a shared instance is observationally identical; freezing turns that
26625
+ * read-only contract from incidental into enforced. Complex results (hooks
26626
+ * returning `{ pass, data, ... }`) still pass through untouched. #705
26627
+ *
26628
+ * @see abstract_hook_step
26629
+ * @see abstract_everything_hook_step
26630
+ *
26631
+ * @internal
26632
+ *
26633
+ */
26634
+ const HOOK_PASSED = Object.freeze({ pass: true }); // eslint-disable-line @typescript-eslint/no-explicit-any
26635
+ const HOOK_REJECTED = Object.freeze({ pass: false }); // eslint-disable-line @typescript-eslint/no-explicit-any
26616
26636
  /**
26617
26637
  *
26618
26638
  * Invoke an optional transition/action hook and normalize its return value
@@ -26654,16 +26674,16 @@ function abstract_hook_step(maybe_hook, hook_args) {
26654
26674
  if (maybe_hook !== undefined) {
26655
26675
  const result = maybe_hook(hook_args);
26656
26676
  if (result === undefined) {
26657
- return { pass: true };
26677
+ return HOOK_PASSED;
26658
26678
  }
26659
26679
  if (result === true) {
26660
- return { pass: true };
26680
+ return HOOK_PASSED;
26661
26681
  }
26662
26682
  if (result === false) {
26663
- return { pass: false };
26683
+ return HOOK_REJECTED;
26664
26684
  }
26665
26685
  if (result === null) {
26666
- return { pass: false };
26686
+ return HOOK_REJECTED;
26667
26687
  }
26668
26688
  if (is_hook_complex_result(result)) {
26669
26689
  return result;
@@ -26671,7 +26691,7 @@ function abstract_hook_step(maybe_hook, hook_args) {
26671
26691
  throw new TypeError(`Unknown hook result type ${result}`);
26672
26692
  }
26673
26693
  else {
26674
- return { pass: true };
26694
+ return HOOK_PASSED;
26675
26695
  }
26676
26696
  }
26677
26697
  /**
@@ -26712,16 +26732,16 @@ function abstract_everything_hook_step(maybe_hook, hook_args) {
26712
26732
  if (maybe_hook !== undefined) {
26713
26733
  const result = maybe_hook(hook_args);
26714
26734
  if (result === undefined) {
26715
- return { pass: true };
26735
+ return HOOK_PASSED;
26716
26736
  }
26717
26737
  if (result === true) {
26718
- return { pass: true };
26738
+ return HOOK_PASSED;
26719
26739
  }
26720
26740
  if (result === false) {
26721
- return { pass: false };
26741
+ return HOOK_REJECTED;
26722
26742
  }
26723
26743
  if (result === null) {
26724
- return { pass: false };
26744
+ return HOOK_REJECTED;
26725
26745
  }
26726
26746
  if (is_hook_complex_result(result)) {
26727
26747
  return result;
@@ -26729,7 +26749,7 @@ function abstract_everything_hook_step(maybe_hook, hook_args) {
26729
26749
  throw new TypeError(`Unknown hook result type ${result}`);
26730
26750
  }
26731
26751
  else {
26732
- return { pass: true };
26752
+ return HOOK_PASSED;
26733
26753
  }
26734
26754
  }
26735
26755
 
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.5";
22703
+ const version = "5.143.6";
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;
@@ -26638,6 +26638,26 @@ function _update_hook_fields(hook_args, res) {
26638
26638
  }
26639
26639
  return false;
26640
26640
  }
26641
+ /**
26642
+ *
26643
+ * Shared, frozen outcomes for the simple hook results. The transition
26644
+ * cascade runs up to ~10 hook steps per transition, and the overwhelmingly
26645
+ * common results — no hook installed, or a hook returning `undefined` /
26646
+ * `true` / `false` — previously allocated a fresh one-field object each
26647
+ * time, just to have `.pass` read once and be discarded. Callers only read
26648
+ * `pass` and probe for an own `data` property ({@link _update_hook_fields}),
26649
+ * so a shared instance is observationally identical; freezing turns that
26650
+ * read-only contract from incidental into enforced. Complex results (hooks
26651
+ * returning `{ pass, data, ... }`) still pass through untouched. #705
26652
+ *
26653
+ * @see abstract_hook_step
26654
+ * @see abstract_everything_hook_step
26655
+ *
26656
+ * @internal
26657
+ *
26658
+ */
26659
+ const HOOK_PASSED = Object.freeze({ pass: true }); // eslint-disable-line @typescript-eslint/no-explicit-any
26660
+ const HOOK_REJECTED = Object.freeze({ pass: false }); // eslint-disable-line @typescript-eslint/no-explicit-any
26641
26661
  /**
26642
26662
  *
26643
26663
  * Invoke an optional transition/action hook and normalize its return value
@@ -26679,16 +26699,16 @@ function abstract_hook_step(maybe_hook, hook_args) {
26679
26699
  if (maybe_hook !== undefined) {
26680
26700
  const result = maybe_hook(hook_args);
26681
26701
  if (result === undefined) {
26682
- return { pass: true };
26702
+ return HOOK_PASSED;
26683
26703
  }
26684
26704
  if (result === true) {
26685
- return { pass: true };
26705
+ return HOOK_PASSED;
26686
26706
  }
26687
26707
  if (result === false) {
26688
- return { pass: false };
26708
+ return HOOK_REJECTED;
26689
26709
  }
26690
26710
  if (result === null) {
26691
- return { pass: false };
26711
+ return HOOK_REJECTED;
26692
26712
  }
26693
26713
  if (is_hook_complex_result(result)) {
26694
26714
  return result;
@@ -26696,7 +26716,7 @@ function abstract_hook_step(maybe_hook, hook_args) {
26696
26716
  throw new TypeError(`Unknown hook result type ${result}`);
26697
26717
  }
26698
26718
  else {
26699
- return { pass: true };
26719
+ return HOOK_PASSED;
26700
26720
  }
26701
26721
  }
26702
26722
  /**
@@ -26737,16 +26757,16 @@ function abstract_everything_hook_step(maybe_hook, hook_args) {
26737
26757
  if (maybe_hook !== undefined) {
26738
26758
  const result = maybe_hook(hook_args);
26739
26759
  if (result === undefined) {
26740
- return { pass: true };
26760
+ return HOOK_PASSED;
26741
26761
  }
26742
26762
  if (result === true) {
26743
- return { pass: true };
26763
+ return HOOK_PASSED;
26744
26764
  }
26745
26765
  if (result === false) {
26746
- return { pass: false };
26766
+ return HOOK_REJECTED;
26747
26767
  }
26748
26768
  if (result === null) {
26749
- return { pass: false };
26769
+ return HOOK_REJECTED;
26750
26770
  }
26751
26771
  if (is_hook_complex_result(result)) {
26752
26772
  return result;
@@ -26754,7 +26774,7 @@ function abstract_everything_hook_step(maybe_hook, hook_args) {
26754
26774
  throw new TypeError(`Unknown hook result type ${result}`);
26755
26775
  }
26756
26776
  else {
26757
- return { pass: true };
26777
+ return HOOK_PASSED;
26758
26778
  }
26759
26779
  }
26760
26780