Flow
Generator-based control-flow helpers to compose synchronous and asynchronous workflows with typed effects, steps, exits, breaks, and dependency injection.
How to import?
The library exposes the DFlow and F namespaces from the main entry or via direct import (tree-shaking friendly), which lets you only load what you need.
import { DFlow, F } from "@duplojs/utils";
import * as DFlow from "@duplojs/utils/flow";
import * as F from "@duplojs/utils/flow";Flow creation and execution
create
Creates a reusable flow object from a flow function.
run
Executes a flow and returns its final value.
exec
Executes a nested flow inside the current flow.
Execution coordination
These helpers keep internal state in WeakMaps keyed by the executed flow reference. To use them correctly across multiple calls, reuse a flow created with F.create(...) or a function returned by F.toFunction(...).
calledByNext
Calls a callback when a later run of the same flow replaces one that is still active.
queue
Serializes or limits concurrent runs of the same flow.
throttling
Ignores or defers runs that happen too close together for the same flow.
debounce
Waits before continuing the execution and cancels the previous run when a new one arrives.
Control flow
breakIf
Stops the current flow branch when a predicate matches.
exitIf
Exits the running flow when a predicate matches, even from nested flows.
step
Registers a named step and can optionally compute a value.
Lifecycle and cleanup
defer
Registers a cleanup callback executed when the flow finishes.
finalizer
Registers a final callback handled by the flow runner.
createInitializer
Creates an initializer that returns a value and automatically registers flow cleanup effects.
Dependencies
createDependence
Creates a typed dependency handler for the flow system.
inject
Requests a dependency from the flow runner.
