• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

microlinkhq / tinyspawn / 40658529770
100%

Build:
DEFAULT BRANCH: master
Ran 28 Oct 2026 08:42AM UTC
Jobs 1
Files 1
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Oct 2026 08:40AM UTC coverage: 100.0%. Remained the same
40658529770

push

github

web-flow
perf(stdout): parse stdout and stderr once per result (#35)

* perf(stdout): parse stdout and stderr once per result

The stdout/stderr getters re-ran Buffer.concat, toString and clean (and
JSON.parse for $.json) on every access. They now parse on the first read
and return the cached value after that. A failed JSON.parse is not cached,
so every read still throws the same SyntaxError.

Local A/B, alternating, 6 runs per side, node v24.16.0, arm64, load 4.2-4.7:

| case                  | base median (range)     | change median (range)   | delta  |
|-----------------------|-------------------------|-------------------------|--------|
| read 50MB stdout x30  | 79.8 ms (77.4-81.2)     | 0.0 ms (0.0-0.0)        | -100%  |
| spawn 50MB stdout     | 34.9 ms (32.9-35.5)     | 34.9 ms (32.3-36.0)     | 0.0%   |
| spawn node -e 0       | 209.8 ms (198.1-222.7)  | 212.0 ms (204.6-218.8)  | +1.0%  |

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* perf(parse): release output chunks once parsed

A kept 50MB result held the raw chunks next to the decoded value.
After a successful parse the chunks are dropped: arrayBuffers retained
goes from 50MB to 0MB (4 runs each, gc settled). A failed JSON.parse
keeps them, so the SyntaxError still repeats on every read.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(error): reject when $.json stdout is not JSON

Building ChildProcessError read stdout immediately, so a failed parse escaped the close handler and crashed the process. Copy the getter instead, and lock the cache for repeated reads, falsy JSON, stderr, and releasing the raw chunks.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(error): print stderr text on rejected commands

Copying the stderr getter made console.log show [Getter] instead of the diagnostic text. Store the parsed value when reading succeeds, and keep the stdout getter only when JSON.parse throws.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-autho... (continued)

34 of 34 branches covered (100.0%)

Branch coverage included in aggregate %.

24 of 24 new or added lines in 1 file covered. (100.0%)

102 of 102 relevant lines covered (100.0%)

21.86 hits per line

Jobs
ID Job ID Ran Files Coverage
1 40658529770.1 28 Oct 2026 08:42AM UTC 1
100.0
GitHub Action Run
Source Files on build 40658529770
  • Tree
  • List 1
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40658529770
  • c0d84b50 on github
  • Prev Build on master (#33674794883)
  • Next Build on master (#40670763728)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc