jssm 5.147.3 → 5.147.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,10 +18,10 @@ Please edit the file it's derived from, instead: `./src/md/readme_base.md`
18
18
 
19
19
 
20
20
 
21
- * Generated for version 5.147.3 at 6/23/2026, 9:46:34 AM
21
+ * Generated for version 5.147.5 at 6/23/2026, 12:40:32 PM
22
22
 
23
23
  -->
24
- # jssm 5.147.3
24
+ # jssm 5.147.5
25
25
 
26
26
  [**Try the live editor**](https://stonecypher.github.io/jssm-viz-demo/graph_explorer.html) ·
27
27
  [Documentation](https://stonecypher.github.io/jssm/docs/) ·
@@ -312,7 +312,7 @@ That decision shows up everywhere downstream:
312
312
  or run `npm run benny` against your own machine.
313
313
 
314
314
  - **More thoroughly tested than any other JavaScript state-machine
315
- library.** 7,456 tests at 100.0% line coverage
315
+ library.** 7,494 tests at 100.0% line coverage
316
316
  ([report](https://coveralls.io/github/StoneCypher/jssm)), plus
317
317
  fuzz testing via `fast-check`, with parser test data across ten natural
318
318
  languages and Emoji.
@@ -445,11 +445,11 @@ If your contribution is missing here, please open an issue.
445
445
 
446
446
  <br/>
447
447
 
448
- ***7,456 tests***, run 82,003 times.
448
+ ***7,494 tests***, run 82,041 times.
449
449
 
450
- - 6,703 specs with 100.0% coverage
451
- - 753 fuzz tests with 69.5% coverage
452
- - 7,276 TypeScript lines - 1.0 tests per line, 11.3 generated tests per line
450
+ - 6,741 specs with 100.0% coverage
451
+ - 753 fuzz tests with 69.4% coverage
452
+ - 7,277 TypeScript lines - 1.0 tests per line, 11.3 generated tests per line
453
453
 
454
454
  [![Actions Status](https://github.com/StoneCypher/jssm/workflows/Node%20CI/badge.svg)](https://github.com/StoneCypher/jssm/actions)
455
455
  [![NPM version](https://img.shields.io/npm/v/jssm.svg)](https://www.npmjs.com/package/jssm)
@@ -21891,7 +21891,11 @@ function compile_rule_handler(rule) {
21891
21891
  return { agg_as: 'transition', val: edges };
21892
21892
  }
21893
21893
  if (rule.key === 'machine_language') {
21894
- return { agg_as: 'machine_language', val: reduce(rule.value) };
21894
+ // Accept BCP-47 language tags (e.g. `en-us`, `zh-Hant`) by reducing to the
21895
+ // primary language subtag before the ISO 639-1 lookup, so a regional tag
21896
+ // resolves to its base language (`en-us` -> `en`) instead of failing.
21897
+ const primary_subtag = String(rule.value).split(/[-_]/)[0];
21898
+ return { agg_as: 'machine_language', val: reduce(primary_subtag) };
21895
21899
  }
21896
21900
  // manually rehandled to make `undefined` as a property safe
21897
21901
  if (rule.key === 'property_definition') {
@@ -22916,7 +22920,7 @@ var constants = /*#__PURE__*/Object.freeze({
22916
22920
  * Useful for runtime diagnostics and for embedding in serialized machine
22917
22921
  * snapshots so that deserializers can detect version-skew.
22918
22922
  */
22919
- const version = "5.147.3";
22923
+ const version = "5.147.5";
22920
22924
 
22921
22925
  // whargarbl lots of these return arrays could/should be sets
22922
22926
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
@@ -24189,8 +24193,12 @@ class Machine {
24189
24193
  machine_definition() {
24190
24194
  return this._machine_definition;
24191
24195
  }
24192
- /** Get the machine's language (ISO 639-1). Set via the FSL `machine_language` directive.
24193
- * @returns The language code string.
24196
+ /** Get the machine's natural language as an ISO 639-1 code. Set via the FSL
24197
+ * `machine_language` directive, which accepts a language name or code, or a
24198
+ * BCP-47 tag whose region subtag is dropped (`en-us` -> `en`). Unrecognized
24199
+ * values resolve to `undefined`.
24200
+ * @returns The ISO 639-1 language code (e.g. `'en'`), or `undefined` if the
24201
+ * supplied value did not resolve to a known language.
24194
24202
  */
24195
24203
  machine_language() {
24196
24204
  return this._machine_language;
package/dist/cdn/viz.js CHANGED
@@ -21916,7 +21916,11 @@ function compile_rule_handler(rule) {
21916
21916
  return { agg_as: 'transition', val: edges };
21917
21917
  }
21918
21918
  if (rule.key === 'machine_language') {
21919
- return { agg_as: 'machine_language', val: reduce(rule.value) };
21919
+ // Accept BCP-47 language tags (e.g. `en-us`, `zh-Hant`) by reducing to the
21920
+ // primary language subtag before the ISO 639-1 lookup, so a regional tag
21921
+ // resolves to its base language (`en-us` -> `en`) instead of failing.
21922
+ const primary_subtag = String(rule.value).split(/[-_]/)[0];
21923
+ return { agg_as: 'machine_language', val: reduce(primary_subtag) };
21920
21924
  }
21921
21925
  // manually rehandled to make `undefined` as a property safe
21922
21926
  if (rule.key === 'property_definition') {
@@ -22941,7 +22945,7 @@ var constants = /*#__PURE__*/Object.freeze({
22941
22945
  * Useful for runtime diagnostics and for embedding in serialized machine
22942
22946
  * snapshots so that deserializers can detect version-skew.
22943
22947
  */
22944
- const version = "5.147.3";
22948
+ const version = "5.147.5";
22945
22949
 
22946
22950
  // whargarbl lots of these return arrays could/should be sets
22947
22951
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
@@ -24214,8 +24218,12 @@ class Machine {
24214
24218
  machine_definition() {
24215
24219
  return this._machine_definition;
24216
24220
  }
24217
- /** Get the machine's language (ISO 639-1). Set via the FSL `machine_language` directive.
24218
- * @returns The language code string.
24221
+ /** Get the machine's natural language as an ISO 639-1 code. Set via the FSL
24222
+ * `machine_language` directive, which accepts a language name or code, or a
24223
+ * BCP-47 tag whose region subtag is dropped (`en-us` -> `en`). Unrecognized
24224
+ * values resolve to `undefined`.
24225
+ * @returns The ISO 639-1 language code (e.g. `'en'`), or `undefined` if the
24226
+ * supplied value did not resolve to a known language.
24219
24227
  */
24220
24228
  machine_language() {
24221
24229
  return this._machine_language;
@@ -108,7 +108,7 @@ function parseFslArgs(argv, spec) {
108
108
  return { positional, flags, helpText };
109
109
  }
110
110
 
111
- const getVersion = () => "5.147.3";
111
+ const getVersion = () => "5.147.5";
112
112
  const SPEC = {
113
113
  flags: {
114
114
  help: { short: "h", boolean: true },