Commit Graph
8 Commits
Author SHA1 Message Date
Chris Tate 8e87f6f9ef Resolve const aliases when deciding a child stream's setEncoding state
An untyped child-stream 'data' listener takes strings when a setEncoding
call on the same stream precedes it. A const alias of an access path
(`const out = child.stdout`) now resolves to that path, so a setEncoding
through one alias and a listener through another, or through the stream
itself, agree. A setEncoding on another receiver that can hold the same
stream (a let copy, a parameter, a call result) leaves the state unclear
and reports the existing SC1090. Receivers that name different members
of one root, or two const roots each initialized by a call or new, are
treated as different streams.
2026-10-20 08:49:48 -05:00
Malte UblandClaude Opus 5.5 447e9bf000 Compile Transform option callbacks and loosely typed child-process listeners
@types/node types the transform/flush completion callback's data as any
and a child stream 'data' chunk as any, and ChildProcess accepts
(code: number, signal: string) exit and close listeners through its
catch-all overload. None of these compiled: the any-typed completion
callback crashed the LLVM emitter, and the child listeners were refused.

The completion callback's data parameter is typed Buffer | string |
undefined while the option callback lowers. Child stream 'data' listeners
with an unknown or any chunk box it as a checked-dynamic value, taking
strings when a setEncoding statement on the same stream precedes the
listener and Buffers when the function never calls setEncoding on it;
other placements are refused. Exit and close listener parameters declared
number or string bind as checked-dynamic values, so the body sees the
null Node passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 04:16:06 -07:00
Chris Tate e334ae444e feat(child_process): support inline execFile callback options (#387)
* feat(child_process): lower UTF-8 execFile callback options

* test(ts7): record execFile callback options fixture order
2026-09-23 00:13:44 -05:00
Chris Tate 9ff5ed1680 feat(child_process): support static fork IPC (#386)
* feat(child_process): support static fork IPC

* fix(child_process): fix fork discovery and send callbacks
2026-09-22 23:24:07 -05:00
Chris TateandHagege Ruben c9cad7a0ba fix(child_process): support shell text capture (#377)
- add cross-platform shell spawning and close lifecycle support
- decode encoded child output across native read boundaries
- cover the supported surface with differential compatibility evidence

Fixes #370

Co-authored-by: Hagege Ruben <20857346+HagegeR@users.noreply.github.com>
2026-09-22 18:03:52 -05:00
Chris Tate a11fd6c881 Add static callable specialization (#350) 2026-09-18 22:50:45 -05:00
Chris Tateandeuxaristia 5e4b4df1b9 feat(child_process): support writable child stdin (#341)
* feat(child_process): support writable child stdin

- Add nonblocking child stdin writers with lifecycle events and platform-aware backpressure.
- Lower writable streams through the C and LLVM backends while fencing unsupported overloads.
- Add differential, type, diagnostics, and compatibility coverage.

Fixes #311

Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com>

* Reject non-literal spawn options

- Emit a named lowering diagnostic instead of silently dropping variable options.
- Cover two- and three-argument spawn overloads with diagnostic regressions.

Fixes #311

Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com>

---------

Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com>
2026-09-17 07:48:29 -05:00
Chris Tate 23d5918a53 init 2026-07-22 18:08:04 -05:00