Wrap a Readable-producing Effect to log its initial value and every
subsequent change under the stax.readable subsystem. The wrapped
Effect returns the original Readable unchanged — this is a
pass-through observer.
Zero cost at the default log level. Enable with
Logger.withMinimumLogLevel(LogLevel.Debug) to see emissions. A
lightweight stepping-stone toward the full Signal DevTools story
(#86) — useful for quickly answering "what value does this Readable
hold right now, and when does it change?" without wiring up a
temporary subscriber.
const val = yield* Signal.make(0).pipe(Readable.debug("my-val"));
// Debug logs:
// stax.readable "initial value" { id: "my-val", value: 0 }
// stax.readable "value changed" { id: "my-val", value: 1 }
// ...
The subscription is forked into the current scope, so it's cleaned up when the enclosing effect's scope closes — no manual teardown needed.
Remove consecutive duplicate values using reference equality.
Remove consecutive duplicate values using a custom equality function.
Filter values from a Readable based on a predicate. Only values that pass the predicate are emitted.
Note: The initial value must pass the predicate or the Readable will wait for the first passing value.
Chain Readables by mapping to another Readable and flattening. When the outer Readable changes, switches to the new inner Readable.
Create a Readable from an initial value and a stream of updates.
Alias for of - creates a constant Readable (identity lift).
Check if a value is a Readable.
Lift a function that takes an object as its argument to work with potentially reactive properties.
Create a Readable from a getter effect and a changes stream factory.
Transform a Readable's value using a mapping function.
Normalize a value that may be static or reactive into a Readable. If the value is already a Readable, returns it unchanged. If the value is static, wraps it in a constant Readable.
Create a constant Readable from a value. The Readable always returns the same value and never changes.
Run a side effect for each value emitted by the Readable. Subscribes in the background (forked into the current scope) and returns immediately. The subscription is automatically cleaned up when the scope closes.
Combine two Readables into a Readable of a tuple.
Combine multiple Readables into a single Readable of a tuple. The combined Readable updates whenever any input changes.
Combine two Readables using a function.
Alias for
zipAllfor backwards compatibility.