Chain class
Internal accumulator for a builder chain.
This class manages the complex pipeline of validators and transformations in the builder pattern. The chain supports at most one type-changing transformer (coercion) to maintain predictable behavior.
Pipeline Structure:
- Prefix transformers (value pivots like pluckValue, pick keys) - applied first
- Pre-coercion validators - validate the original type
- Coercion transformer - changes the type (optional, at most one)
- Post-coercion validators - validate the coerced type
Coercion Rules:
- Only one coercion is allowed per chain
- Pre-coercion validators are discarded when coercion is applied (they target the old type)
- If multiple coercions are attempted, they are composed or the later one replaces the earlier
- Custom coercions can be composed with built-in ones
Example chain flow:
// Original: {"user": {"name": "Alice", "age": "25"}}
pluckValue("user") // -> {"name": "Alice", "age": "25"}
.isMap() // pre-coercion validation
.toInt("age") // coercion: String -> int
.gt(0) // post-coercion validation
Constructors
- Chain()
Properties
- coercedToBool → bool
-
no setter
- coercedToDateTime → bool
-
no setter
- coercedToDouble → bool
-
no setter
- coercedToInt → bool
-
no setter
- coercedToJson → bool
-
no setter
- coercedToString → bool
-
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
add(
IValidator v) → void - Adds a validator to the appropriate position in the chain. Pre-coercion validators go before coercion, post-coercion validators go after.
-
addPrefix(
IValidator prefix(IValidator child)) → void - Adds a prefix value-mapping validator that runs before coercion and post-validators. Used for operations like pluckValue that extract values from containers.
-
build(
) → IValidator - Builds the final validator by composing all chain elements in the correct order.
-
copyWith(
) → Chain -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
setTransform(
CoercionKind kind, IValidator transformer(IValidator child), {bool dropPre = true}) → void - Sets a type coercion transformer with optional pre-validator preservation.
-
toString(
) → String -
A string representation of this object.
inherited
-
wrap(
IValidator fn(IValidator current)) → void - Wraps all validators at the current position with a wrapper function.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited