jssm 5.112.3 → 5.113.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.
Files changed (78) hide show
  1. package/README.md +3 -3
  2. package/dist/deno/README.md +347 -0
  3. package/dist/deno/jssm.js +1 -0
  4. package/dist/{es6 → deno}/jssm_constants.d.ts +5 -0
  5. package/dist/{es6 → deno}/jssm_types.d.ts +298 -5
  6. package/dist/jssm.es5.cjs +1 -1
  7. package/dist/jssm.es5.iife.js +1 -1
  8. package/dist/jssm.es6.mjs +1 -1
  9. package/dist/jssm_viz.cjs +1 -1
  10. package/dist/jssm_viz.iife.cjs +1 -1
  11. package/dist/jssm_viz.mjs +1 -1
  12. package/jssm.es5.d.cts +241 -2
  13. package/jssm.es6.d.ts +241 -2
  14. package/jssm_viz.es5.d.cts +216 -2
  15. package/jssm_viz.es6.d.ts +216 -2
  16. package/package.json +18 -2
  17. package/.clocignore +0 -1
  18. package/.codeclimate.yml +0 -22
  19. package/.editorconfig +0 -12
  20. package/.eslintrc +0 -20
  21. package/.gitattributes +0 -17
  22. package/.log-progress.json +0 -9
  23. package/.nycrc +0 -6
  24. package/.travis.yml +0 -9
  25. package/CHANGELOG.md +0 -263
  26. package/CLAUDE.md +0 -11
  27. package/dist/es6/fsl_parser.js +0 -1
  28. package/dist/es6/jssm.js +0 -3320
  29. package/dist/es6/jssm_arrow.js +0 -211
  30. package/dist/es6/jssm_compiler.js +0 -380
  31. package/dist/es6/jssm_constants.js +0 -121
  32. package/dist/es6/jssm_error.js +0 -47
  33. package/dist/es6/jssm_theme.js +0 -24
  34. package/dist/es6/jssm_types.js +0 -3
  35. package/dist/es6/jssm_util.js +0 -337
  36. package/dist/es6/jssm_viz.js +0 -560
  37. package/dist/es6/jssm_viz_colors.js +0 -63
  38. package/dist/es6/themes/jssm_base_stylesheet.d.ts +0 -11
  39. package/dist/es6/themes/jssm_base_stylesheet.js +0 -58
  40. package/dist/es6/themes/jssm_theme_bold.d.ts +0 -11
  41. package/dist/es6/themes/jssm_theme_bold.js +0 -58
  42. package/dist/es6/themes/jssm_theme_default.d.ts +0 -11
  43. package/dist/es6/themes/jssm_theme_default.js +0 -58
  44. package/dist/es6/themes/jssm_theme_modern.d.ts +0 -11
  45. package/dist/es6/themes/jssm_theme_modern.js +0 -58
  46. package/dist/es6/themes/jssm_theme_ocean.d.ts +0 -11
  47. package/dist/es6/themes/jssm_theme_ocean.js +0 -56
  48. package/dist/es6/themes/jssm_theme_plain.d.ts +0 -11
  49. package/dist/es6/themes/jssm_theme_plain.js +0 -70
  50. package/dist/es6/version.js +0 -2
  51. package/dist/jssm.es5.nonmin.cjs +0 -24506
  52. package/dist/jssm.es6.nonmin.cjs +0 -24473
  53. package/dist/jssm_viz.es5.iife.nonmin.cjs +0 -24679
  54. package/dist/jssm_viz.es5.nonmin.cjs +0 -24674
  55. package/dist/jssm_viz.es6.nonmin.cjs +0 -24661
  56. package/jest-dragon.config.cjs +0 -36
  57. package/jest-spec.config.cjs +0 -36
  58. package/jest-stoch.config.cjs +0 -36
  59. package/jest-unicode.config.cjs +0 -36
  60. package/log-progress.data.json +0 -28
  61. package/rollup.config.deno.js +0 -44
  62. package/rollup.config.es5.js +0 -52
  63. package/rollup.config.es6.js +0 -55
  64. package/rollup.config.viz.es5.js +0 -46
  65. package/rollup.config.viz.es6.js +0 -46
  66. package/rollup.config.viz.iife.js +0 -36
  67. package/tutorial_learn_testing.md +0 -168
  68. package/typedoc-options.cjs +0 -69
  69. /package/dist/{es6 → deno}/fsl_parser.d.ts +0 -0
  70. /package/dist/{es6 → deno}/jssm.d.ts +0 -0
  71. /package/dist/{es6 → deno}/jssm_arrow.d.ts +0 -0
  72. /package/dist/{es6 → deno}/jssm_compiler.d.ts +0 -0
  73. /package/dist/{es6 → deno}/jssm_error.d.ts +0 -0
  74. /package/dist/{es6 → deno}/jssm_theme.d.ts +0 -0
  75. /package/dist/{es6 → deno}/jssm_util.d.ts +0 -0
  76. /package/dist/{es6 → deno}/jssm_viz.d.ts +0 -0
  77. /package/dist/{es6 → deno}/jssm_viz_colors.d.ts +0 -0
  78. /package/dist/{es6 → deno}/version.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jssm",
3
- "version": "5.112.3",
3
+ "version": "5.113.0",
4
4
  "engines": {
5
5
  "node": ">=10.0.0"
6
6
  },
@@ -48,9 +48,25 @@
48
48
  ]
49
49
  },
50
50
  "type": "module",
51
+ "files": [
52
+ "dist/jssm.es5.cjs",
53
+ "dist/jssm.es5.iife.js",
54
+ "dist/jssm.es6.mjs",
55
+ "dist/jssm_viz.cjs",
56
+ "dist/jssm_viz.iife.cjs",
57
+ "dist/jssm_viz.mjs",
58
+ "dist/deno/jssm.js",
59
+ "dist/deno/*.d.ts",
60
+ "dist/deno/README.md",
61
+ "jssm.es5.d.cts",
62
+ "jssm.es6.d.ts",
63
+ "jssm_viz.es5.d.cts",
64
+ "jssm_viz.es6.d.ts",
65
+ "MIGRATING-jssm-viz.md"
66
+ ],
51
67
  "description": "A Javascript finite state machine (FSM) with a terse DSL and a simple API. Most FSMs are one-liners. Fast, easy, powerful, well tested, typed with TypeScript, and visualizations. MIT License.",
52
68
  "main": "dist/jssm.es5.cjs",
53
- "module": "dist/jssm.es6.js",
69
+ "module": "dist/jssm.es6.mjs",
54
70
  "browser": "dist/jssm.es5.iife.js",
55
71
  "types": "./jssm.es5.d.cts",
56
72
  "scripts": {
package/.clocignore DELETED
@@ -1 +0,0 @@
1
- ./src/ts/fsl_parser.ts
package/.codeclimate.yml DELETED
@@ -1,22 +0,0 @@
1
- engines:
2
- csslint:
3
- enabled: true
4
- duplication:
5
- enabled: true
6
- config:
7
- languages:
8
- - javascript
9
- eslint:
10
- enabled: true
11
- fixme:
12
- enabled: true
13
- ratings:
14
- paths:
15
- - "**.css"
16
- - "**.js"
17
- - "**.jsx"
18
- exclude_paths:
19
- - dist/
20
- - docs/
21
- - src/js/tests/
22
- - build/
package/.editorconfig DELETED
@@ -1,12 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- indent_style = space
5
- end_of_line = lf
6
- charset = utf-8
7
- trim_trailing_whitespace = true
8
- insert_final_newline = true
9
- indent_size = 2
10
-
11
- [*.md]
12
- trim_trailing_whitespace = false
package/.eslintrc DELETED
@@ -1,20 +0,0 @@
1
- {
2
-
3
- "parser" : "@typescript-eslint/parser",
4
- "parserOptions": {
5
- "sourceType" : "module",
6
- },
7
-
8
- "plugins" : [ "@typescript-eslint" ],
9
- "env" : { "es6": true, "commonjs": true },
10
-
11
- "extends" : [
12
- "plugin:@typescript-eslint/eslint-recommended"
13
- ],
14
-
15
- rules: {
16
- "no-unused-vars": 0,
17
- "@typescript-eslint/no-unused-vars": 0
18
- }
19
-
20
- }
package/.gitattributes DELETED
@@ -1,17 +0,0 @@
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
@@ -1,9 +0,0 @@
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/.nycrc DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "exclude": [
3
- "src/ts/jssm-dot.*",
4
- "build/**/*"
5
- ]
6
- }
package/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - "12"
4
- - "11"
5
- - "10"
6
- - "8"
7
- - "6"
8
- after_success:
9
- - npm run travis
package/CHANGELOG.md DELETED
@@ -1,263 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- 1266 merges; 222 releases; Changlogging the last 10 commits; Full changelog at [CHANGELOG.long.md](CHANGELOG.long.md)
6
-
7
-
8
-
9
-  
10
-
11
-  
12
-
13
- Published tags:
14
-
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
-
17
-
18
-
19
-
20
-
21
- &nbsp;
22
-
23
- &nbsp;
24
-
25
- ## [Untagged] - 5/12/2026 7:14:03 AM
26
-
27
- Commit [9276011491437258fbde3e919ec657d29f4ea62e](https://github.com/StoneCypher/jssm/commit/9276011491437258fbde3e919ec657d29f4ea62e)
28
-
29
- Author: `John Haugeland <stonecypher@gmail.com>`
30
-
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.
54
-
55
-
56
-
57
-
58
- &nbsp;
59
-
60
- &nbsp;
61
-
62
- ## [Untagged] - 5/12/2026 6:52:39 AM
63
-
64
- Commit [a253dd558bdb6e82020b069daaba9e222e4cb355](https://github.com/StoneCypher/jssm/commit/a253dd558bdb6e82020b069daaba9e222e4cb355)
65
-
66
- Author: `John Haugeland <stonecypher@gmail.com>`
67
-
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.
77
-
78
-
79
-
80
-
81
- &nbsp;
82
-
83
- &nbsp;
84
-
85
- ## [Untagged] - 5/12/2026 6:52:15 AM
86
-
87
- Commit [c6d821b33b3d6269ab6569a0c2e7ec7ef40637d8](https://github.com/StoneCypher/jssm/commit/c6d821b33b3d6269ab6569a0c2e7ec7ef40637d8)
88
-
89
- Author: `John Haugeland <stonecypher@gmail.com>`
90
-
91
- * docs(progress): scaffold weekly investor-facing progress log
92
-
93
-
94
-
95
-
96
- &nbsp;
97
-
98
- &nbsp;
99
-
100
- ## [Untagged] - 5/12/2026 6:50:41 AM
101
-
102
- Commit [af56aae6dc85ec5306bbd6d7e0098b963fce86a8](https://github.com/StoneCypher/jssm/commit/af56aae6dc85ec5306bbd6d7e0098b963fce86a8)
103
-
104
- Author: `John Haugeland <stonecypher@gmail.com>`
105
-
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.
111
-
112
-
113
-
114
-
115
- &nbsp;
116
-
117
- &nbsp;
118
-
119
- ## [Untagged] - 5/12/2026 6:50:08 AM
120
-
121
- Commit [83aaf720e938e7494788b55123a703c3d981a026](https://github.com/StoneCypher/jssm/commit/83aaf720e938e7494788b55123a703c3d981a026)
122
-
123
- Author: `John Haugeland <stonecypher@gmail.com>`
124
-
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.
135
-
136
-
137
-
138
-
139
- &nbsp;
140
-
141
- &nbsp;
142
-
143
- ## [Untagged] - 5/12/2026 6:49:56 AM
144
-
145
- Commit [7773fa1da33821c898627e44ba682eb26c3bf625](https://github.com/StoneCypher/jssm/commit/7773fa1da33821c898627e44ba682eb26c3bf625)
146
-
147
- Author: `John Haugeland <stonecypher@gmail.com>`
148
-
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.
157
-
158
-
159
-
160
-
161
- &nbsp;
162
-
163
- &nbsp;
164
-
165
- ## [Untagged] - 5/12/2026 6:49:44 AM
166
-
167
- Commit [8255702d4820e6afcecc9b240a1aed591c7ad02c](https://github.com/StoneCypher/jssm/commit/8255702d4820e6afcecc9b240a1aed591c7ad02c)
168
-
169
- Author: `John Haugeland <stonecypher@gmail.com>`
170
-
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
184
-
185
-
186
-
187
-
188
- &nbsp;
189
-
190
- &nbsp;
191
-
192
- ## [Untagged] - 5/12/2026 6:49:28 AM
193
-
194
- Commit [b8f224a863c9862fea06999fc2efefbfcb399a71](https://github.com/StoneCypher/jssm/commit/b8f224a863c9862fea06999fc2efefbfcb399a71)
195
-
196
- Author: `John Haugeland <stonecypher@gmail.com>`
197
-
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
220
-
221
-
222
-
223
-
224
- &nbsp;
225
-
226
- &nbsp;
227
-
228
- ## [Untagged] - 5/12/2026 6:48:42 AM
229
-
230
- Commit [22db66d28fbd1e5f8ef6a8ddcc853a0ff9c85dcf](https://github.com/StoneCypher/jssm/commit/22db66d28fbd1e5f8ef6a8ddcc853a0ff9c85dcf)
231
-
232
- Author: `John Haugeland <stonecypher@gmail.com>`
233
-
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.
238
-
239
-
240
-
241
-
242
- &nbsp;
243
-
244
- &nbsp;
245
-
246
- ## [Untagged] - 5/12/2026 6:22:05 AM
247
-
248
- Commit [bd1be3bf09a533b11e5ed3e6fa29f9e8db90d560](https://github.com/StoneCypher/jssm/commit/bd1be3bf09a533b11e5ed3e6fa29f9e8db90d560)
249
-
250
- Author: `John Haugeland <stonecypher@gmail.com>`
251
-
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 DELETED
@@ -1,11 +0,0 @@
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.