A Rust implementation of a client for communicating with esbuild's service API over stdio
by denolandRust
Last 12 weeks · 2 commits
2 of 6 standards met
esbuild 0.27.6 changed the field of the build response from a string to raw UTF-8 bytes ([](https://github.com/evanw/esbuild/blob/main/cmd/esbuild/service.go)), so every build with now fails to decode: This makes accept (validated as UTF-8) in addition to , so one client works across esbuild versions and against any other textual field esbuild switches to bytes for the same perf reason. Also bumps the version the tests run against from 0.25.5 to 0.28.2, which is what caught this. All tests pass against 0.28.2 with the fix; the metafile test fails without it. Needed by the PR bumping the pinned esbuild version to 0.28.2.
Summary prevent ping and on-start response delivery from blocking packet dispatch add a deterministic regression test with a saturated response queue Root cause handles both stdout reads and outgoing responses in one select loop. While is waiting for capacity in the bounded packet queue, it cannot drain the bounded response queue. The packet handler previously waited inline for response capacity for and , which allowed the two tasks to enter a circular wait. These response paths are now spawned like the other plugin hooks, so packet dispatch keeps draining incoming packets while response delivery waits for capacity. This preserves the existing bounded channels. Fixes denoland/deno#36417. Validation Deno 2.9.4 with this checkout as a local path override
Repository: denoland/esbuild_client. Description: A Rust implementation of a client for communicating with esbuild's service API over stdio Stars: 11, Forks: 5. Primary language: Rust. Languages: Rust (94.7%), TypeScript (5.3%). License: MIT. Homepage: https://crates.io/crates/esbuild_client Open PRs: 2, open issues: 0. Last activity: 2w ago. Community health: 37%. Top contributors: nathanwhit, bartlomieju, VivienGaluchot.