jssm 5.150.0 → 5.151.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.
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.150.0 at 6/28/2026, 9:41:46 AM
21
+ * Generated for version 5.151.0 at 6/28/2026, 12:55:57 PM
22
22
 
23
23
  -->
24
- # jssm 5.150.0
24
+ # jssm 5.151.0
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,716 tests at 100.0% line coverage
315
+ library.** 7,720 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,716 tests***, run 82,362 times.
448
+ ***7,720 tests***, run 82,366 times.
449
449
 
450
- - 6,962 specs with 100.0% coverage
451
- - 754 fuzz tests with 57.0% coverage
452
- - 9,100 TypeScript lines - 0.8 tests per line, 9.1 generated tests per line
450
+ - 6,966 specs with 100.0% coverage
451
+ - 754 fuzz tests with 56.7% coverage
452
+ - 9,139 TypeScript lines - 0.8 tests per line, 9.0 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)
@@ -1109,7 +1109,7 @@
1109
1109
  "declarations": [
1110
1110
  {
1111
1111
  "kind": "class",
1112
- "description": "`<fsl-footer>` — a status bar for a parent `<fsl-instance>`.\n\nShows the current state with both **local** counts (actions firable from\nhere + transitions out of here) and **global** machine counts: distinct\naction *names*, **action-starts** (action-bearing edges — each place an\naction fires from), and total transitions. Plus terminal/complete badges.\n\nLocal counts track transitions by observing the host's reflected\n`current-state` / `legal-actions` attributes; the global counts refresh on\n`fsl-machine-rebuilt`, so the footer survives a live rebuild (#1387). A\ndefault slot carries embedder status. Standalone (no `<fsl-instance>`\nancestor) it renders just the slot.",
1112
+ "description": "`<fsl-footer>` — a status bar for a parent `<fsl-instance>`.\r\n\r\nShows the current state with both **local** counts (actions firable from\r\nhere + transitions out of here) and **global** machine counts: distinct\r\naction *names*, **action-starts** (action-bearing edges — each place an\r\naction fires from), and total transitions. Plus terminal/complete badges.\r\n\r\nLocal counts track transitions by observing the host's reflected\r\n`current-state` / `legal-actions` attributes; the global counts refresh on\r\n`fsl-machine-rebuilt`, so the footer survives a live rebuild (#1387). A\r\ndefault slot carries embedder status. Standalone (no `<fsl-instance>`\r\nancestor) it renders just the slot.",
1113
1113
  "name": "FslFooter",
1114
1114
  "cssParts": [
1115
1115
  {
@@ -1229,7 +1229,7 @@
1229
1229
  "text": "void"
1230
1230
  }
1231
1231
  },
1232
- "description": "Recompute the machine-derived counts: local transitions out of the current\nstate, and the global action / action-start / transition totals. Only\ncalled while a host is attached, so `_host` is non-null here."
1232
+ "description": "Recompute the machine-derived counts: local transitions out of the current\r\nstate, and the global action / action-start / transition totals. Only\r\ncalled while a host is attached, so `_host` is non-null here."
1233
1233
  }
1234
1234
  ],
1235
1235
  "superclass": {
@@ -3245,7 +3245,7 @@
3245
3245
  "name": "permalink_for",
3246
3246
  "return": {
3247
3247
  "type": {
3248
- "text": "string"
3248
+ "text": ""
3249
3249
  }
3250
3250
  },
3251
3251
  "parameters": [
@@ -3256,7 +3256,25 @@
3256
3256
  }
3257
3257
  }
3258
3258
  ],
3259
- "description": "A shareable URL for the given FSL: the current page URL with the source\r\nencoded in the hash (`#fsl=...`). A page that reads the hash on load can\r\nrestore the machine. Browser-only (uses `location`), like the rest of the\r\ntoolbar."
3259
+ "description": "A shareable URL for the given FSL: the current page URL with the source\r\ncompressed into the hash as `#m=<scheme><payload>`. The payload is URL-safe\r\nbase64, so no characters need percent-escaping; `<scheme>` is a single digit\r\n— `1` when DEFLATE made the source smaller, `0` for the raw bytes when it did\r\nnot — so a short machine's link is never longer than its uncompressed form.\r\nDecode with fsl_from_permalink. Browser-only (uses `location` and the\r\nplatform compression streams), like the rest of the toolbar."
3260
+ },
3261
+ {
3262
+ "kind": "function",
3263
+ "name": "fsl_from_permalink",
3264
+ "return": {
3265
+ "type": {
3266
+ "text": ""
3267
+ }
3268
+ },
3269
+ "parameters": [
3270
+ {
3271
+ "name": "url",
3272
+ "type": {
3273
+ "text": "string"
3274
+ }
3275
+ }
3276
+ ],
3277
+ "description": "Recover the FSL source from a permalink produced by permalink_for:\r\nread the `#m=<scheme><payload>` fragment, decode the URL-safe base64, and\r\ninflate when `<scheme>` is `1`. Accepts a full URL or a bare fragment, with\r\nor without the leading `#`."
3260
3278
  },
3261
3279
  {
3262
3280
  "kind": "function",
@@ -3543,6 +3561,14 @@
3543
3561
  "module": "src/ts/wc/fsl_toolbar_wc.ts"
3544
3562
  }
3545
3563
  },
3564
+ {
3565
+ "kind": "js",
3566
+ "name": "fsl_from_permalink",
3567
+ "declaration": {
3568
+ "name": "fsl_from_permalink",
3569
+ "module": "src/ts/wc/fsl_toolbar_wc.ts"
3570
+ }
3571
+ },
3546
3572
  {
3547
3573
  "kind": "js",
3548
3574
  "name": "embed_snippet_for",
@@ -23371,7 +23371,7 @@ var constants = /*#__PURE__*/Object.freeze({
23371
23371
  * Useful for runtime diagnostics and for embedding in serialized machine
23372
23372
  * snapshots so that deserializers can detect version-skew.
23373
23373
  */
23374
- const version = "5.150.0";
23374
+ const version = "5.151.0";
23375
23375
 
23376
23376
  // whargarbl lots of these return arrays could/should be sets
23377
23377
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
package/dist/cdn/viz.js CHANGED
@@ -23396,7 +23396,7 @@ var constants = /*#__PURE__*/Object.freeze({
23396
23396
  * Useful for runtime diagnostics and for embedding in serialized machine
23397
23397
  * snapshots so that deserializers can detect version-skew.
23398
23398
  */
23399
- const version = "5.150.0";
23399
+ const version = "5.151.0";
23400
23400
 
23401
23401
  // whargarbl lots of these return arrays could/should be sets
23402
23402
  const { state_name_chars, state_name_first_chars, action_label_chars } = constants;
@@ -108,7 +108,7 @@ function parseFslArgs(argv, spec) {
108
108
  return { positional, flags, helpText };
109
109
  }
110
110
 
111
- const getVersion = () => "5.150.0";
111
+ const getVersion = () => "5.151.0";
112
112
  const SPEC = {
113
113
  flags: {
114
114
  help: { short: "h", boolean: true },