ProcessStreamUnion

PackageAxial.Process

Consuming process output

ProcessStream<'env, 'value> represents output that can be transformed as the process runs. Construct one with streamStdoutLines or another Process stream constructor.

Transforms such as map, filter, and take belong to this module. Terminals such as runCollect, runFold, and runForEachFlow return a Flow; they do not start execution. Run that Flow at a script boundary, or bind it in the application Flow. Terminals that retain completion return it alongside the consumed value:

  • ProcessCompletion.Completed result means the process completed and includes its ProcessResult.
  • ProcessCompletion.StoppedEarly means a stream operator stopped consumption and Axial cleaned up the process.

toFlowStream adapts values to FlowStream for composition with application streams, but intentionally drops successful process completion. Keep the ProcessStream terminal when completion matters.

See Streaming output for examples, including effectful consumers and early stopping.

Specification

Kind
Union
Members
11
Examples
0
mapSignature
ProcessStream.map mapping source
filterSignature
ProcessStream.filter predicate source
takeSignature
ProcessStream.take count source
takeWhileSignature
ProcessStream.takeWhile predicate source
toFlowStreamSignature
ProcessStream.toFlowStream (ProcessStream factory)

Summary

NameSignatureSynopsis
Transform streams
mapProcessStream.map mapping sourceTransforms values while preserving process completion.
filterProcessStream.filter predicate sourceSelects values without losing process completion or skipping drainage of other channels.
takeProcessStream.take count sourceStops the owned process after a prefix.
takeWhileProcessStream.takeWhile predicate sourceStops before the first nonmatching value, awaits owned cleanup, and reports StoppedEarly.
Consume a stream
runFoldProcessStream.runFold folder initial sourceFolds selected values and returns the state together with completion; capture policy is independent.
runCollectProcessStream.runCollect sourceCollects every selected value plus completion.
runDrainProcessStream.runDrain sourceConsumes selected output without accumulating values and returns completion.
runForEachProcessStream.runForEach action sourceSynchronous callback; use runForEachFlow for explicit service operations.
runForEachFlowProcessStream.runForEachFlow action sourceRuns each callback in the application environment; preserves consumer errors separately.
runFoldFlowProcessStream.runFoldFlow folder initial sourceFolds with application workflows; typed consumer failures use ConsumerFailed.
Adapt to FlowStream
toFlowStreamProcessStream.toFlowStream (ProcessStream factory)Converts to ordinary FlowStream, discarding successful process completion.

Transform streams

Filter, map, or stop consumption after a prefix.

kind:member

map

ProcessStream.map mapping source
Member
Transforms values while preserving process completion.

Parameters

NameTypeDescription
mapping'a -> 'b
sourceProcessStream<'c, 'a>

Returns

ProcessStream<'c, 'b>
kind:member

filter

ProcessStream.filter predicate source
Member
Selects values without losing process completion or skipping drainage of other channels.

Parameters

NameTypeDescription
predicate'a -> bool
sourceProcessStream<'b, 'a>

Returns

ProcessStream<'b, 'a>
kind:member

take

ProcessStream.take count source
Member
Stops the owned process after a prefix. Zero does not start a process.

Parameters

NameTypeDescription
countint
sourceProcessStream<'a, 'b>

Returns

ProcessStream<'a, 'b>
kind:member

takeWhile

ProcessStream.takeWhile predicate source
Member
Stops before the first nonmatching value, awaits owned cleanup, and reports StoppedEarly.

Parameters

NameTypeDescription
predicate'a -> bool
sourceProcessStream<'b, 'a>

Returns

ProcessStream<'b, 'a>

Consume a stream

Collect, fold, drain, or handle each output value.

kind:member

runFold

ProcessStream.runFold folder initial source
Member
Folds selected values and returns the state together with completion; capture policy is independent.

Parameters

NameTypeDescription
folder'a -> 'b -> 'a
initial'a
sourceProcessStream<'c, 'b>

Returns

Flow<'c, ProcessError, ('a * ProcessCompletion)>
kind:member

runCollect

ProcessStream.runCollect source
Member
Collects every selected value plus completion. The collected list can grow without bound.

Parameters

NameTypeDescription
sourceProcessStream<'a, 'b>

Returns

Flow<'a, ProcessError, ('b list * ProcessCompletion)>
kind:member

runDrain

ProcessStream.runDrain source
Member
Consumes selected output without accumulating values and returns completion.

Parameters

NameTypeDescription
sourceProcessStream<'a, 'b>

Returns

Flow<'a, ProcessError, ProcessCompletion>
kind:member

runForEach

ProcessStream.runForEach action source
Member
Synchronous callback; use runForEachFlow for explicit service operations.

Parameters

NameTypeDescription
action'a -> unit
sourceProcessStream<'b, 'a>

Returns

Flow<'b, ProcessError, ProcessCompletion>
kind:member

runForEachFlow

ProcessStream.runForEachFlow action source
Member
Runs each callback in the application environment; preserves consumer errors separately.

Parameters

NameTypeDescription
action'a -> Flow<'b, 'c, unit>
sourceProcessStream<'b, 'a>

Returns

Flow<'b, ProcessStreamError<'c>, ProcessCompletion>
kind:member

runFoldFlow

ProcessStream.runFoldFlow folder initial source
Member
Folds with application workflows; typed consumer failures use ConsumerFailed.

Parameters

NameTypeDescription
folder'a -> 'b -> Flow<'c, 'd, 'a>
initial'a
sourceProcessStream<'c, 'b>

Returns

Flow<'c, ProcessStreamError<'d>, ('a * ProcessCompletion)>

Adapt to FlowStream

Convert process output for composition with application streams.

kind:member

toFlowStream

ProcessStream.toFlowStream (ProcessStream factory)
Member
Converts to ordinary FlowStream, discarding successful process completion.

Parameters

NameTypeDescription
ProcessStream factoryProcessStream<'a, 'b>

Returns

FlowStream<'a, ProcessError, 'b>