Skip to content

NodeChildProcessSpawner.ts

Shared Node.js implementation of the child process spawner service.

This module adapts node:child_process.spawn to the Effect ChildProcessSpawner service. Provide layer to run ChildProcess commands in Node-compatible runtimes: commands get scoped process handles with stdin sinks, stdout and stderr streams, exit-code waiting, interruption-time cleanup, process killing, and custom file-descriptor pipes.

The implementation sits below the command-building API. It validates and resolves cwd through the Effect FileSystem and Path services, translates Node errno failures to PlatformError, and uses scopes to terminate referenced children when the owning effect is interrupted or finalized. Pipelines are flattened by flattenCommand and spawned one process at a time, wiring the selected source stream (stdout, stderr, all, or fdN) to the destination stdin or fdN.

Since v4.0.0



Layer that provides the NodeChildProcessSpawner implementation.

Signature

declare const layer: Layer.Layer<ChildProcessSpawner, never, Path.Path | FileSystem.FileSystem>

Source

Since v4.0.0

Result of flattening a pipeline of commands.

Signature

export interface FlattenedPipeline {
readonly commands: Arr.NonEmptyReadonlyArray<ChildProcess.StandardCommand>
readonly pipeOptions: ReadonlyArray<ChildProcess.PipeOptions>
}

Source

Since v4.0.0

Flattens a Command into an array of StandardCommands along with pipe options for each connection.

Signature

declare const flattenCommand: (command: ChildProcess.Command) => FlattenedPipeline

Source

Since v4.0.0