mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 02:48:50 +00:00
## Summary Fixes compatibility issue with Node.js libraries that use `Object.assign(promise, childProcess)` pattern, specifically `tinyspawn` (used by `youtube-dl-exec`). ## Problem In Node.js, child process stdio properties (`stdin`, `stdout`, `stderr`, `stdio`) are enumerable own properties that can be copied by `Object.assign()`. In Bun, they were non-enumerable getters on the prototype, causing `Object.assign()` to fail copying them. This broke libraries like: - `tinyspawn` - uses `Object.assign(promise, childProcess)` to merge properties - `youtube-dl-exec` - depends on tinyspawn internally ## Solution Make stdio properties enumerable own properties during spawn while preserving: - ✅ Lazy initialization (streams created only when accessed) - ✅ Original getter functionality and caching - ✅ Performance (minimal overhead) ## Testing - Added comprehensive regression tests - Verified compatibility with `tinyspawn` and `youtube-dl-exec` - Existing child_process tests still pass ## Related - Fixes: https://github.com/microlinkhq/youtube-dl-exec/issues/246 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>