jssm 5.104.1 → 5.112.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.
Files changed (62) hide show
  1. package/.gitattributes +17 -6
  2. package/.log-progress.json +9 -0
  3. package/CHANGELOG.md +130 -47
  4. package/CLAUDE.md +11 -0
  5. package/MIGRATING-jssm-viz.md +67 -0
  6. package/README.md +179 -882
  7. package/dist/es6/fsl_parser.js +1 -1
  8. package/dist/es6/jssm.d.ts +773 -39
  9. package/dist/es6/jssm.js +921 -89
  10. package/dist/es6/jssm_arrow.js +24 -0
  11. package/dist/es6/jssm_compiler.d.ts +17 -2
  12. package/dist/es6/jssm_compiler.js +17 -3
  13. package/dist/es6/jssm_constants.d.ts +27 -0
  14. package/dist/es6/jssm_constants.js +27 -0
  15. package/dist/es6/jssm_error.d.ts +19 -0
  16. package/dist/es6/jssm_error.js +19 -0
  17. package/dist/es6/jssm_theme.d.ts +11 -0
  18. package/dist/es6/jssm_theme.js +11 -0
  19. package/dist/es6/jssm_types.d.ts +29 -3
  20. package/dist/es6/jssm_util.d.ts +161 -9
  21. package/dist/es6/jssm_util.js +174 -17
  22. package/dist/es6/jssm_viz.d.ts +175 -0
  23. package/dist/es6/jssm_viz.js +560 -0
  24. package/dist/es6/jssm_viz_colors.d.ts +63 -0
  25. package/dist/es6/jssm_viz_colors.js +63 -0
  26. package/dist/es6/version.js +1 -1
  27. package/dist/jssm.es5.cjs +1 -1
  28. package/dist/jssm.es5.iife.js +1 -0
  29. package/dist/jssm.es5.nonmin.cjs +2201 -870
  30. package/dist/jssm.es6.mjs +1 -1
  31. package/dist/jssm.es6.nonmin.cjs +2200 -871
  32. package/dist/jssm_viz.cjs +1 -0
  33. package/dist/{jssm.es5.iife.nonmin.cjs → jssm_viz.es5.iife.nonmin.cjs} +2589 -1090
  34. package/dist/jssm_viz.es5.nonmin.cjs +24674 -0
  35. package/dist/jssm_viz.es6.nonmin.cjs +24661 -0
  36. package/dist/jssm_viz.iife.cjs +1 -0
  37. package/dist/jssm_viz.mjs +1 -0
  38. package/jest-dragon.config.cjs +4 -1
  39. package/jest-spec.config.cjs +9 -6
  40. package/jest-stoch.config.cjs +4 -1
  41. package/jest-unicode.config.cjs +4 -1
  42. package/jssm.es5.d.cts +950 -41
  43. package/jssm.es6.d.ts +950 -41
  44. package/jssm_viz.es5.d.cts +2127 -0
  45. package/jssm_viz.es6.d.ts +2127 -0
  46. package/log-progress.data.json +28 -0
  47. package/package.json +56 -23
  48. package/rollup.config.viz.es5.js +46 -0
  49. package/rollup.config.viz.es6.js +46 -0
  50. package/rollup.config.viz.iife.js +36 -0
  51. package/typedoc-options.cjs +4 -3
  52. package/dist/jssm.es5.iife.cjs +0 -1
  53. package/fsl_parser.d.ts +0 -6
  54. package/jssm.d.ts +0 -1141
  55. package/jssm_arrow.d.ts +0 -53
  56. package/jssm_compiler.d.ts +0 -135
  57. package/jssm_constants.d.ts +0 -5
  58. package/jssm_error.d.ts +0 -8
  59. package/jssm_theme.d.ts +0 -4
  60. package/jssm_types.d.ts +0 -378
  61. package/jssm_util.d.ts +0 -106
  62. package/version.d.ts +0 -2
package/.gitattributes CHANGED
@@ -1,6 +1,17 @@
1
- docs/* linguist-generated=true
2
- build/* linguist-generated=true
3
- dist/* linguist-generated=true
4
- src/ts/generated_code/* linguist-generated=true
5
- benchmark/* linguist-generated=true
6
- coverage/* linguist-generated=true
1
+ # Build outputs
2
+ build/** linguist-generated
3
+ dist/** linguist-generated
4
+
5
+ # Generated documentation
6
+ docs/** linguist-generated
7
+
8
+ # Generated source (PEG.js parser output, ~18k lines)
9
+ src/ts/fsl_parser.ts linguist-generated
10
+ src/ts/generated_code/** linguist-generated
11
+
12
+ # Test/benchmark artifacts
13
+ benchmark/** linguist-generated
14
+ coverage/** linguist-generated
15
+
16
+ # Lockfiles (also keeps Languages sidebar accurate)
17
+ package-lock.json linguist-generated
@@ -0,0 +1,9 @@
1
+ {
2
+ "data_path": "./log-progress.data.json",
3
+ "output_path": "./src/site/log_progress.html",
4
+ "transform_script": null,
5
+ "css_path": null,
6
+ "suppress_base_css": false,
7
+ "project_title": "jssm Progress Log",
8
+ "title_url": "https://stonecypher.github.io/jssm/"
9
+ }
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
- 1180 merges; 208 releases; Changlogging the last 10 commits; Full changelog at [CHANGELOG.long.md](CHANGELOG.long.md)
5
+ 1266 merges; 222 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__103__0">5.103.0</a>, <a href="#5__102__1">5.102.1</a>, <a href="#5__101__0">5.101.0</a>, <a href="#5__100__0">5.100.0</a>, <a href="#5__99__0">5.99.0</a>, <a href="#5__98__8">5.98.8</a>, <a href="#5__98__7">5.98.7</a>, <a href="#5__98__2">5.98.2</a>, <a href="#5__98__0">5.98.0</a>, <a href="#5__97__1">5.97.1</a>, <a href="#5__97__0">5.97.0</a>, <a href="#5__96__1">5.96.1</a>, <a href="#5__96__0">5.96.0</a>, <a href="#5__95__0">5.95.0</a>, <a href="#5__94__0">5.94.0</a>, <a href="#5__93__0">5.93.0</a>, <a href="#5__91__1">5.91.1</a>, <a href="#5__91__0">5.91.0</a>, <a href="#5__90__1">5.90.1</a>, <a href="#5__90__0">5.90.0</a>, <a href="#5__89__6">5.89.6</a>, <a href="#5__89__3">5.89.3</a>, <a href="#5__89__2">5.89.2</a>, <a href="#5__89__1">5.89.1</a>, <a href="#5__89__0">5.89.0</a>, <a href="#5__88__4">5.88.4</a>, <a href="#5__88__3">5.88.3</a>, <a href="#5__88__2">5.88.2</a>, <a href="#5__88__1">5.88.1</a>, <a href="#5__88__0">5.88.0</a>, <a href="#5__87__0">5.87.0</a>, <a href="#5__86__3">5.86.3</a>, <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>
15
+ <a href="#5__110__1">5.110.1</a>, <a href="#5__109__0">5.109.0</a>, <a href="#5__108__0">5.108.0</a>, <a href="#5__107__2">5.107.2</a>, <a href="#5__107__0">5.107.0</a>, <a href="#5__106__0">5.106.0</a>, <a href="#5__105__6">5.105.6</a>, <a href="#5__105__4">5.105.4</a>, <a href="#5__105__3">5.105.3</a>, <a href="#5__105__2">5.105.2</a>, <a href="#5__105__1">5.105.1</a>, <a href="#5__105__0">5.105.0</a>, <a href="#5__104__2">5.104.2</a>, <a href="#5__104__1">5.104.1</a>, <a href="#5__103__0">5.103.0</a>, <a href="#5__102__1">5.102.1</a>, <a href="#5__101__0">5.101.0</a>, <a href="#5__100__0">5.100.0</a>, <a href="#5__99__0">5.99.0</a>, <a href="#5__98__8">5.98.8</a>, <a href="#5__98__7">5.98.7</a>, <a href="#5__98__2">5.98.2</a>, <a href="#5__98__0">5.98.0</a>, <a href="#5__97__1">5.97.1</a>, <a href="#5__97__0">5.97.0</a>, <a href="#5__96__1">5.96.1</a>, <a href="#5__96__0">5.96.0</a>, <a href="#5__95__0">5.95.0</a>, <a href="#5__94__0">5.94.0</a>, <a href="#5__93__0">5.93.0</a>, <a href="#5__91__1">5.91.1</a>, <a href="#5__91__0">5.91.0</a>, <a href="#5__90__1">5.90.1</a>, <a href="#5__90__0">5.90.0</a>, <a href="#5__89__6">5.89.6</a>, <a href="#5__89__3">5.89.3</a>, <a href="#5__89__2">5.89.2</a>, <a href="#5__89__1">5.89.1</a>, <a href="#5__89__0">5.89.0</a>, <a href="#5__88__4">5.88.4</a>, <a href="#5__88__3">5.88.3</a>, <a href="#5__88__2">5.88.2</a>, <a href="#5__88__1">5.88.1</a>, <a href="#5__88__0">5.88.0</a>, <a href="#5__87__0">5.87.0</a>, <a href="#5__86__3">5.86.3</a>, <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,13 +22,35 @@ Published tags:
22
22
 
23
23
  &nbsp;
24
24
 
25
- ## [Untagged] - 10/28/2024 2:20:09 AM
25
+ ## [Untagged] - 5/12/2026 7:14:03 AM
26
26
 
27
- Commit [c2c93ee920f462610d3c7e6d336845c3ff714978](https://github.com/StoneCypher/jssm/commit/c2c93ee920f462610d3c7e6d336845c3ff714978)
27
+ Commit [9276011491437258fbde3e919ec657d29f4ea62e](https://github.com/StoneCypher/jssm/commit/9276011491437258fbde3e919ec657d29f4ea62e)
28
28
 
29
29
  Author: `John Haugeland <stonecypher@gmail.com>`
30
30
 
31
- * Use structuredClone to return data(), fixes StoneCypher/fsl#1302
31
+ * fix(grammar): integer literals capture all digits, not just the first
32
+ * Three PEG rules — IntegerLiteral, Stripe, Cycle — captured only the
33
+ first digit of multi-digit input. Root cause: PEG.js's default
34
+ return value for a `NonZeroDigit DecimalDigit*` sequence is an array
35
+ of matches, which stringifies with commas at parseInt time (e.g.
36
+ `["1", ["2","3"]].toString() === "1,2,3"` → parseInt stops at the
37
+ comma → returns 1). Switched all three rules to `$(...)` text
38
+ capture so they return the matched substring directly.
39
+ * Visible impact:
40
+ - `fsl_version: 10.0.0;` returned `{major:1, full:"10.0.0"}`;
41
+ now correctly `{major:10, full:"10.0.0"}`.
42
+ - `+|123` returned `{key:'stripe', value:12}`; now `{value:123}`.
43
+ - `+1234` returned `{key:'cycle', value:12}`; now `{value:1234}`.
44
+ * Also adds:
45
+ - src/ts/tests/numeric.stoch.ts: 35 property-based tests for §3
46
+ (Numeric layer) plus the §6 Stripe/Cycle integer-literal slice.
47
+ Lifts grammar stoch coverage from 1/14 sections to 2/14. Surfaced
48
+ the two bugs fixed in this commit.
49
+ - testPathIgnorePatterns in each jest-*.config.cjs to exclude
50
+ `.claude/worktrees/` so concurrent agent worktrees don't
51
+ contaminate the host's test runs.
52
+ - notes/dragons-egg.md: entry for numeric.stoch.ts with bug-fix
53
+ narrative.
32
54
 
33
55
 
34
56
 
@@ -37,15 +59,21 @@ Author: `John Haugeland <stonecypher@gmail.com>`
37
59
 
38
60
  &nbsp;
39
61
 
40
- <a name="5__103__0" />
62
+ ## [Untagged] - 5/12/2026 6:52:39 AM
41
63
 
42
- ## [5.103.0] - 10/20/2024 1:24:40 PM
43
-
44
- Commit [e2a01ddfc21abc4b0a0f142178e726fc86360d4a](https://github.com/StoneCypher/jssm/commit/e2a01ddfc21abc4b0a0f142178e726fc86360d4a)
64
+ Commit [a253dd558bdb6e82020b069daaba9e222e4cb355](https://github.com/StoneCypher/jssm/commit/a253dd558bdb6e82020b069daaba9e222e4cb355)
45
65
 
46
66
  Author: `John Haugeland <stonecypher@gmail.com>`
47
67
 
48
- * resolve library updates for security issues
68
+ * chore(test): remove jest, @swc/jest, @types/jest, jest-json-reporter2, jest configs and scripts
69
+ * All test suites are running on vitest. Drop:
70
+ - the four `jest-*.config.cjs` files
71
+ - the eleven `jest-*` npm scripts
72
+ - devDependencies `jest`, `@swc/jest`, `@swc/core` (only used by
73
+ @swc/jest), `@types/jest`, `jest-json-reporter2`, and
74
+ `jest-environment-jsdom`. jsdom itself is kept since vitest uses it
75
+ directly for `// @vitest-environment jsdom` blocks.
76
+ * npm install reports 296 packages removed.
49
77
 
50
78
 
51
79
 
@@ -54,18 +82,13 @@ Author: `John Haugeland <stonecypher@gmail.com>`
54
82
 
55
83
  &nbsp;
56
84
 
57
- <a name="5__102__1" />
58
-
59
- ## [5.102.1] - 10/20/2024 1:17:22 PM
85
+ ## [Untagged] - 5/12/2026 6:52:15 AM
60
86
 
61
- Commit [5c4c9ae8e6553078ffe3dc9a762f45e061fa78ac](https://github.com/StoneCypher/jssm/commit/5c4c9ae8e6553078ffe3dc9a762f45e061fa78ac)
87
+ Commit [c6d821b33b3d6269ab6569a0c2e7ec7ef40637d8](https://github.com/StoneCypher/jssm/commit/c6d821b33b3d6269ab6569a0c2e7ec7ef40637d8)
62
88
 
63
89
  Author: `John Haugeland <stonecypher@gmail.com>`
64
90
 
65
- Merges [5b8ecee, da15bd2]
66
-
67
- * Merge pull request #574 from StoneCypher/ModernizeRollup
68
- * Modernize rollup
91
+ * docs(progress): scaffold weekly investor-facing progress log
69
92
 
70
93
 
71
94
 
@@ -74,13 +97,17 @@ Merges [5b8ecee, da15bd2]
74
97
 
75
98
  &nbsp;
76
99
 
77
- ## [Untagged] - 10/20/2024 1:12:51 PM
100
+ ## [Untagged] - 5/12/2026 6:50:41 AM
78
101
 
79
- Commit [da15bd291c9cbcc90521b41b0a60e4ff74435dc9](https://github.com/StoneCypher/jssm/commit/da15bd291c9cbcc90521b41b0a60e4ff74435dc9)
102
+ Commit [af56aae6dc85ec5306bbd6d7e0098b963fce86a8](https://github.com/StoneCypher/jssm/commit/af56aae6dc85ec5306bbd6d7e0098b963fce86a8)
80
103
 
81
104
  Author: `John Haugeland <stonecypher@gmail.com>`
82
105
 
83
- * new rollup needs node 16, shaving build from node 14 and 15
106
+ * ci(workflow): switch unicode jobs to vitest
107
+ * Updates each `unicode-*` job in nodejs.yml to invoke the new
108
+ `vitest-unicode-*` scripts instead of `jest-unicode-*`. The main
109
+ `build` job goes through `npm run ci_build` -> `npm run test`, which
110
+ already calls the new `vitest` script, so no change is needed there.
84
111
 
85
112
 
86
113
 
@@ -89,13 +116,22 @@ Author: `John Haugeland <stonecypher@gmail.com>`
89
116
 
90
117
  &nbsp;
91
118
 
92
- ## [Untagged] - 10/20/2024 1:09:57 PM
119
+ ## [Untagged] - 5/12/2026 6:50:08 AM
93
120
 
94
- Commit [439e4e831293d7db416e23b3ed404f14c7cf547e](https://github.com/StoneCypher/jssm/commit/439e4e831293d7db416e23b3ed404f14c7cf547e)
121
+ Commit [83aaf720e938e7494788b55123a703c3d981a026](https://github.com/StoneCypher/jssm/commit/83aaf720e938e7494788b55123a703c3d981a026)
95
122
 
96
123
  Author: `John Haugeland <stonecypher@gmail.com>`
97
124
 
98
- * forgot to version bump
125
+ * feat(test): port jest-unicode to vitest.unicode.config.ts
126
+ * Adds vitest.unicode.config.ts mirroring jest-unicode.config.cjs. The
127
+ five npm scripts (`vitest-unicode-atom`, `-string`, `-atom-label`,
128
+ `-string-label`, `-action`) each invoke `vitest run` against a single
129
+ `*.uspec.ts` file, matching the equivalent jest-unicode-* scripts.
130
+ * Note: the old jest-unicode-atom-label and -string-label scripts both
131
+ incorrectly pointed at unicode-atoms.uspec.ts (a pre-existing bug from
132
+ when the unicode suites were split). The new vitest scripts route each
133
+ script to its correctly named file.
134
+ * Sample run: vitest-unicode-atom -> 320 tests pass, ~260s wall.
99
135
 
100
136
 
101
137
 
@@ -104,13 +140,20 @@ Author: `John Haugeland <stonecypher@gmail.com>`
104
140
 
105
141
  &nbsp;
106
142
 
107
- ## [Untagged] - 10/20/2024 1:06:45 PM
143
+ ## [Untagged] - 5/12/2026 6:49:56 AM
108
144
 
109
- Commit [3b5681cb78461189a4b0b8ff493e4318072f1ad2](https://github.com/StoneCypher/jssm/commit/3b5681cb78461189a4b0b8ff493e4318072f1ad2)
145
+ Commit [7773fa1da33821c898627e44ba682eb26c3bf625](https://github.com/StoneCypher/jssm/commit/7773fa1da33821c898627e44ba682eb26c3bf625)
110
146
 
111
147
  Author: `John Haugeland <stonecypher@gmail.com>`
112
148
 
113
- * modernize rollup and rollup plugins
149
+ * feat(test): port jest-dragon to vitest.dragon.config.ts
150
+ * Mirrors jest-dragon.config.cjs: glob `**/*.maximal.ts`, coverage to
151
+ coverage/ksd/, metrics.json via the vitest reporter.
152
+ * Note: the only `*.maximal.ts` file (kitchen_sink_dragon.maximal.ts)
153
+ references `make_mulberry_rand` from `jssm_util`, which was renamed to
154
+ splitmix32 in commit 1401a08 and never updated. The suite already
155
+ failed at collection time under jest; vitest preserves the same failure
156
+ mode. The dragon suite predates this conversion and is left as-is.
114
157
 
115
158
 
116
159
 
@@ -119,15 +162,25 @@ Author: `John Haugeland <stonecypher@gmail.com>`
119
162
 
120
163
  &nbsp;
121
164
 
122
- <a name="5__101__0" />
123
-
124
- ## [5.101.0] - 10/20/2024 12:48:49 PM
165
+ ## [Untagged] - 5/12/2026 6:49:44 AM
125
166
 
126
- Commit [5b8eceeda70dbcc8a76b7f4fc7750fd355072960](https://github.com/StoneCypher/jssm/commit/5b8eceeda70dbcc8a76b7f4fc7750fd355072960)
167
+ Commit [8255702d4820e6afcecc9b240a1aed591c7ad02c](https://github.com/StoneCypher/jssm/commit/8255702d4820e6afcecc9b240a1aed591c7ad02c)
127
168
 
128
169
  Author: `John Haugeland <stonecypher@gmail.com>`
129
170
 
130
- * update gh vended actions (checkout and setup-node) to v4 each
171
+ * feat(test): port jest-stoch to vitest.stoch.config.ts
172
+ * - Adds vitest.stoch.config.ts mirroring jest-stoch.config.cjs (same
173
+ coverage ignores, zero thresholds, metrics.json into coverage/stoch/).
174
+ - Fixes seq.stoch.ts: fast-check@2's `Property.run` treats any predicate
175
+ return value that is not `null`, `undefined`, or `true` as failure.
176
+ Under jest `expect(...).toBe(...)` returned `undefined`; under vitest
177
+ the same chain returns the assertion-chain object, which fast-check
178
+ then reports as `Property failed by returning false`. Prefix each
179
+ predicate `expect()` with `void` so the implicit return is undefined
180
+ on both runners.
181
+ * After:
182
+ jest-stoch: 9 tests / ~12s self
183
+ vitest-stoch: 9 tests / <1s self / ~6s wall
131
184
 
132
185
 
133
186
 
@@ -136,18 +189,34 @@ Author: `John Haugeland <stonecypher@gmail.com>`
136
189
 
137
190
  &nbsp;
138
191
 
139
- <a name="5__100__0" />
192
+ ## [Untagged] - 5/12/2026 6:49:28 AM
140
193
 
141
- ## [5.100.0] - 10/20/2024 11:13:49 AM
142
-
143
- Commit [ffd807a9024771b7c41b498af871e211d95d1ca5](https://github.com/StoneCypher/jssm/commit/ffd807a9024771b7c41b498af871e211d95d1ca5)
194
+ Commit [b8f224a863c9862fea06999fc2efefbfcb399a71](https://github.com/StoneCypher/jssm/commit/b8f224a863c9862fea06999fc2efefbfcb399a71)
144
195
 
145
196
  Author: `John Haugeland <stonecypher@gmail.com>`
146
197
 
147
- Merges [1241e0f, cbb3d68]
148
-
149
- * Merge pull request #573 from StoneCypher/types-fixes-2
150
- * Types fixes 2
198
+ * feat(test): port jest-spec to vitest.spec.config.ts
199
+ * - Adds vitest.spec.config.ts mirroring jest-spec.config.cjs (same coverage
200
+ ignores, same 100% thresholds, same metrics.json output via the new
201
+ reporter).
202
+ - Adds vitest.setup.ts that aliases `jest` -> `vi` on globalThis so the
203
+ existing `jest.fn(...)` calls in hooks.spec.ts / posthooks.spec.ts keep
204
+ working unchanged.
205
+ - Adds src/buildjs/vitest_metrics_reporter.cjs, a small custom reporter
206
+ that emits the same `metrics.json` shape jest-json-reporter2 did so
207
+ make_readme.cjs keeps working.
208
+ - viz_svg_element.spec.ts pragma swapped to @vitest-environment.
209
+ - properties.spec.ts had four `describe()` blocks containing only
210
+ `expect()` calls (no `test()`). Jest accidentally ran those at
211
+ collection time, interleaved with the surrounding `traffic_light.go()`
212
+ calls. Vitest defers the describe body, so all of the go()s ran first
213
+ and every assertion saw the terminal state. Snapshot state/props at
214
+ collection time, then assert the snapshot inside real `test()` calls.
215
+ - after_mapping.spec.ts had two more orphan describes with the same
216
+ issue; promoted to `test()`.
217
+ * After the conversion:
218
+ jest-spec: 5285 tests (5251 pass + 34 todo), ~41s self
219
+ vitest-spec: 5291 tests (5257 pass + 34 todo), ~14s self / ~38s wall
151
220
 
152
221
 
153
222
 
@@ -156,13 +225,16 @@ Merges [1241e0f, cbb3d68]
156
225
 
157
226
  &nbsp;
158
227
 
159
- ## [Untagged] - 10/20/2024 11:11:03 AM
228
+ ## [Untagged] - 5/12/2026 6:48:42 AM
160
229
 
161
- Commit [cbb3d689578b29108c483132721c596637e7af61](https://github.com/StoneCypher/jssm/commit/cbb3d689578b29108c483132721c596637e7af61)
230
+ Commit [22db66d28fbd1e5f8ef6a8ddcc853a0ff9c85dcf](https://github.com/StoneCypher/jssm/commit/22db66d28fbd1e5f8ef6a8ddcc853a0ff9c85dcf)
162
231
 
163
232
  Author: `John Haugeland <stonecypher@gmail.com>`
164
233
 
165
- * Accept @tylerbutler 's generous donation; test locally for nine years; bump version, rebuild, release
234
+ * chore(test): add vitest and @vitest/coverage-v8 as devDependencies
235
+ * First step of the Jest -> Vitest conversion. Adds vitest@^2.1.9 and the
236
+ v8 coverage adapter so both runners can coexist while the rest of the
237
+ configs are migrated.
166
238
 
167
239
 
168
240
 
@@ -171,10 +243,21 @@ Author: `John Haugeland <stonecypher@gmail.com>`
171
243
 
172
244
  &nbsp;
173
245
 
174
- ## [Untagged] - 10/10/2024 12:42:37 PM
246
+ ## [Untagged] - 5/12/2026 6:22:05 AM
175
247
 
176
- Commit [8c3ea00087f1af7322c262e2556cf5a13a1d6567](https://github.com/StoneCypher/jssm/commit/8c3ea00087f1af7322c262e2556cf5a13a1d6567)
248
+ Commit [bd1be3bf09a533b11e5ed3e6fa29f9e8db90d560](https://github.com/StoneCypher/jssm/commit/bd1be3bf09a533b11e5ed3e6fa29f9e8db90d560)
177
249
 
178
- Author: `Tyler Butler <tyler@tylerbutler.com>`
250
+ Author: `John Haugeland <stonecypher@gmail.com>`
179
251
 
180
- * regen esm types
252
+ * test(stoch): add arrow_decorations coverage + dragons-egg tracker
253
+ * 11 property-based tests asserting the free-ordered arrow-decoration
254
+ grammar (commit 1acbc62) is permutation-invariant on both sides of
255
+ an arrow and rejects per-kind duplicates. Lifts grammar stoch
256
+ coverage from 0/14 sections to 1/14.
257
+ * - notes/dragons-egg.md: living tracker so each new stoch test is
258
+ documented for the future dragon-tier pass.
259
+ - src/buildjs/ci_profile.cjs (+ ci_profile npm script): measure
260
+ wall-clock per CI phase for data-driven test-runner decisions.
261
+ - src/doc_md/todo.md: LLM-consumer instructions + image-CLI gallery
262
+ entries.
263
+ - .github/workflows/nodejs.yml: align unicode-atoms job to Node 24.
package/CLAUDE.md ADDED
@@ -0,0 +1,11 @@
1
+ This is a typescript project that creates a library with a function, as well as a CLI.
2
+
3
+ Please write your code documentation in DocBlock.
4
+
5
+ When you create a function, please also create tests and code documentation, and update the base_README.
6
+
7
+ When you alter a function, please keep the code documentation docblock up to date, as well as the base_README.
8
+
9
+ Please do not attempt to change the package version unless you have been asked to. Being in /sc-commit counts as being asked to.
10
+
11
+ Please do not attempt to push code unless you have been asked to. Always ask before pushing code, even if you have been instructed to.
@@ -0,0 +1,67 @@
1
+ # Migrating from `jssm-viz` to `jssm/viz`
2
+
3
+ Starting with **jssm 5.109.0**, the visualization library `jssm-viz` is part
4
+ of `jssm` itself, exposed as the `jssm/viz` subpath.
5
+
6
+ The standalone `jssm-viz` package is deprecated. It will continue to work
7
+ (via a thin shim that re-exports from `jssm/viz`) but receive no further
8
+ updates.
9
+
10
+
11
+
12
+
13
+
14
+ ## TL;DR
15
+
16
+ Change every:
17
+
18
+ ```typescript
19
+ import { fsl_to_svg_string } from 'jssm-viz';
20
+ ```
21
+
22
+ to:
23
+
24
+ ```typescript
25
+ import { fsl_to_svg_string } from 'jssm/viz';
26
+ ```
27
+
28
+ That is the entire required change. The function signatures are unchanged.
29
+
30
+
31
+
32
+
33
+
34
+ ## What's new in `jssm/viz`
35
+
36
+ ### `fsl_to_svg_element` and `machine_to_svg_element`
37
+
38
+ Returns a parsed `SVGSVGElement` directly instead of a string, skipping the
39
+ `innerHTML = svg_string` step. Browser-only by default; in Node, requires
40
+ `configure({ DOMParser })`.
41
+
42
+ ```typescript
43
+ import { fsl_to_svg_element } from 'jssm/viz';
44
+
45
+ const el = await fsl_to_svg_element('a -> b;');
46
+ document.getElementById('chart').appendChild(el);
47
+ ```
48
+
49
+ ### `configure(opts)`
50
+
51
+ Optional one-time configuration entry point. Currently accepts a custom
52
+ `DOMParser` constructor for Node + jsdom usage of `*_svg_element`.
53
+
54
+
55
+
56
+
57
+
58
+ ## Under the hood
59
+
60
+ The visualization engine has been upgraded from `viz.js@2.1.2` (2018) to
61
+ `@viz-js/viz@3.x` (current). The new engine is ESM-native, has its own
62
+ TypeScript types, does not pollute window globals, and renders synchronously
63
+ after a one-time WASM initialization. Existing `*_svg_string` functions
64
+ still return promises — only the internal cold-start is async.
65
+
66
+ If you reached into `jssm-viz` internals (anything not in the documented
67
+ API), those internals have changed. The supported public API is unchanged.