jssm 5.104.2 → 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 -45
  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
- 1185 merges; 209 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__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>
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] - 6/30/2025 11:59:14 AM
25
+ ## [Untagged] - 5/12/2026 7:14:03 AM
26
26
 
27
- Commit [83eb9ba05ee1089b9cdb94cfb5afd023edd18089](https://github.com/StoneCypher/jssm/commit/83eb9ba05ee1089b9cdb94cfb5afd023edd18089)
27
+ Commit [9276011491437258fbde3e919ec657d29f4ea62e](https://github.com/StoneCypher/jssm/commit/9276011491437258fbde3e919ec657d29f4ea62e)
28
28
 
29
29
  Author: `John Haugeland <stonecypher@gmail.com>`
30
30
 
31
- * Eliminated two methods. Please reimplement them both.
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,16 +59,21 @@ Author: `John Haugeland <stonecypher@gmail.com>`
37
59
 
38
60
  &nbsp;
39
61
 
40
- ## [Untagged] - 4/4/2025 1:21:48 AM
62
+ ## [Untagged] - 5/12/2026 6:52:39 AM
41
63
 
42
- Commit [03dda20b684b8614caa993ac796f95d6bfabd74e](https://github.com/StoneCypher/jssm/commit/03dda20b684b8614caa993ac796f95d6bfabd74e)
64
+ Commit [a253dd558bdb6e82020b069daaba9e222e4cb355](https://github.com/StoneCypher/jssm/commit/a253dd558bdb6e82020b069daaba9e222e4cb355)
43
65
 
44
66
  Author: `John Haugeland <stonecypher@gmail.com>`
45
67
 
46
- Merges [31dfb9c, 51d8ae4]
47
-
48
- * Merge pull request #576 from miguel-rios-r/UpdatePackageJsonDefaultExportFileExtension
49
- * Remove .js in package.json > export > dafault
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.
50
77
 
51
78
 
52
79
 
@@ -55,13 +82,13 @@ Merges [31dfb9c, 51d8ae4]
55
82
 
56
83
  &nbsp;
57
84
 
58
- ## [Untagged] - 4/3/2025 7:56:09 AM
85
+ ## [Untagged] - 5/12/2026 6:52:15 AM
59
86
 
60
- Commit [51d8ae4581a9c2b851fdd441c3c51e89353e2fd2](https://github.com/StoneCypher/jssm/commit/51d8ae4581a9c2b851fdd441c3c51e89353e2fd2)
87
+ Commit [c6d821b33b3d6269ab6569a0c2e7ec7ef40637d8](https://github.com/StoneCypher/jssm/commit/c6d821b33b3d6269ab6569a0c2e7ec7ef40637d8)
61
88
 
62
- Author: `MRR <miguelrios@Miguels-MacBook-Air.local>`
89
+ Author: `John Haugeland <stonecypher@gmail.com>`
63
90
 
64
- * Remove .js in package.json > export > dafault because it file doesnt exist
91
+ * docs(progress): scaffold weekly investor-facing progress log
65
92
 
66
93
 
67
94
 
@@ -70,13 +97,17 @@ Author: `MRR <miguelrios@Miguels-MacBook-Air.local>`
70
97
 
71
98
  &nbsp;
72
99
 
73
- ## [Untagged] - 2/4/2025 5:01:42 PM
100
+ ## [Untagged] - 5/12/2026 6:50:41 AM
74
101
 
75
- Commit [77c87d1279333427cd78386c2a7e3a903fed494e](https://github.com/StoneCypher/jssm/commit/77c87d1279333427cd78386c2a7e3a903fed494e)
102
+ Commit [af56aae6dc85ec5306bbd6d7e0098b963fce86a8](https://github.com/StoneCypher/jssm/commit/af56aae6dc85ec5306bbd6d7e0098b963fce86a8)
76
103
 
77
104
  Author: `John Haugeland <stonecypher@gmail.com>`
78
105
 
79
- * This branch is bullshit, ignore it, I just need to show off the test environment
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.
80
111
 
81
112
 
82
113
 
@@ -85,15 +116,22 @@ Author: `John Haugeland <stonecypher@gmail.com>`
85
116
 
86
117
  &nbsp;
87
118
 
88
- <a name="5__104__1" />
89
-
90
- ## [5.104.1] - 10/28/2024 2:26:03 AM
119
+ ## [Untagged] - 5/12/2026 6:50:08 AM
91
120
 
92
- Commit [31dfb9c1f14c6de3cf9ba7773273164c675567c4](https://github.com/StoneCypher/jssm/commit/31dfb9c1f14c6de3cf9ba7773273164c675567c4)
121
+ Commit [83aaf720e938e7494788b55123a703c3d981a026](https://github.com/StoneCypher/jssm/commit/83aaf720e938e7494788b55123a703c3d981a026)
93
122
 
94
123
  Author: `John Haugeland <stonecypher@gmail.com>`
95
124
 
96
- * remove node 16 from gha over rollup support, move big-3 to node 23 and node 22
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.
97
135
 
98
136
 
99
137
 
@@ -102,13 +140,20 @@ Author: `John Haugeland <stonecypher@gmail.com>`
102
140
 
103
141
  &nbsp;
104
142
 
105
- ## [Untagged] - 10/28/2024 2:20:09 AM
143
+ ## [Untagged] - 5/12/2026 6:49:56 AM
106
144
 
107
- Commit [c2c93ee920f462610d3c7e6d336845c3ff714978](https://github.com/StoneCypher/jssm/commit/c2c93ee920f462610d3c7e6d336845c3ff714978)
145
+ Commit [7773fa1da33821c898627e44ba682eb26c3bf625](https://github.com/StoneCypher/jssm/commit/7773fa1da33821c898627e44ba682eb26c3bf625)
108
146
 
109
147
  Author: `John Haugeland <stonecypher@gmail.com>`
110
148
 
111
- * Use structuredClone to return data(), fixes StoneCypher/fsl#1302
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.
112
157
 
113
158
 
114
159
 
@@ -117,15 +162,25 @@ Author: `John Haugeland <stonecypher@gmail.com>`
117
162
 
118
163
  &nbsp;
119
164
 
120
- <a name="5__103__0" />
165
+ ## [Untagged] - 5/12/2026 6:49:44 AM
121
166
 
122
- ## [5.103.0] - 10/20/2024 1:24:40 PM
123
-
124
- Commit [e2a01ddfc21abc4b0a0f142178e726fc86360d4a](https://github.com/StoneCypher/jssm/commit/e2a01ddfc21abc4b0a0f142178e726fc86360d4a)
167
+ Commit [8255702d4820e6afcecc9b240a1aed591c7ad02c](https://github.com/StoneCypher/jssm/commit/8255702d4820e6afcecc9b240a1aed591c7ad02c)
125
168
 
126
169
  Author: `John Haugeland <stonecypher@gmail.com>`
127
170
 
128
- * resolve library updates for security issues
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
129
184
 
130
185
 
131
186
 
@@ -134,18 +189,34 @@ Author: `John Haugeland <stonecypher@gmail.com>`
134
189
 
135
190
  &nbsp;
136
191
 
137
- <a name="5__102__1" />
138
-
139
- ## [5.102.1] - 10/20/2024 1:17:22 PM
192
+ ## [Untagged] - 5/12/2026 6:49:28 AM
140
193
 
141
- Commit [5c4c9ae8e6553078ffe3dc9a762f45e061fa78ac](https://github.com/StoneCypher/jssm/commit/5c4c9ae8e6553078ffe3dc9a762f45e061fa78ac)
194
+ Commit [b8f224a863c9862fea06999fc2efefbfcb399a71](https://github.com/StoneCypher/jssm/commit/b8f224a863c9862fea06999fc2efefbfcb399a71)
142
195
 
143
196
  Author: `John Haugeland <stonecypher@gmail.com>`
144
197
 
145
- Merges [5b8ecee, da15bd2]
146
-
147
- * Merge pull request #574 from StoneCypher/ModernizeRollup
148
- * Modernize rollup
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
149
220
 
150
221
 
151
222
 
@@ -154,13 +225,16 @@ Merges [5b8ecee, da15bd2]
154
225
 
155
226
  &nbsp;
156
227
 
157
- ## [Untagged] - 10/20/2024 1:12:51 PM
228
+ ## [Untagged] - 5/12/2026 6:48:42 AM
158
229
 
159
- Commit [da15bd291c9cbcc90521b41b0a60e4ff74435dc9](https://github.com/StoneCypher/jssm/commit/da15bd291c9cbcc90521b41b0a60e4ff74435dc9)
230
+ Commit [22db66d28fbd1e5f8ef6a8ddcc853a0ff9c85dcf](https://github.com/StoneCypher/jssm/commit/22db66d28fbd1e5f8ef6a8ddcc853a0ff9c85dcf)
160
231
 
161
232
  Author: `John Haugeland <stonecypher@gmail.com>`
162
233
 
163
- * new rollup needs node 16, shaving build from node 14 and 15
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.
164
238
 
165
239
 
166
240
 
@@ -169,10 +243,21 @@ Author: `John Haugeland <stonecypher@gmail.com>`
169
243
 
170
244
  &nbsp;
171
245
 
172
- ## [Untagged] - 10/20/2024 1:09:57 PM
246
+ ## [Untagged] - 5/12/2026 6:22:05 AM
173
247
 
174
- Commit [439e4e831293d7db416e23b3ed404f14c7cf547e](https://github.com/StoneCypher/jssm/commit/439e4e831293d7db416e23b3ed404f14c7cf547e)
248
+ Commit [bd1be3bf09a533b11e5ed3e6fa29f9e8db90d560](https://github.com/StoneCypher/jssm/commit/bd1be3bf09a533b11e5ed3e6fa29f9e8db90d560)
175
249
 
176
250
  Author: `John Haugeland <stonecypher@gmail.com>`
177
251
 
178
- * forgot to version bump
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.