builder library
Eskema Builder API
High-level fluent API for assembling complex validation pipelines and schemas in a readable, strongly-typed, incremental fashion. The builder pattern lets you express shape, normalization, and constraints in a left-to-right chain.
Entrypoints
b()
orbuilder()
— create a new root builder (see RootBuilder).$b
,$builder
— pre-built root builder singletons (stateless, safe to reuse).- Type-specific helpers:
$string()
,$int()
,$double()
,$number()
,$bool()
,$map()
,$list()
— shortcut for$b.string()
, etc.
Usage
- Choose a type:
.string()
,.int_()
,.map()
,.list()
, etc. - Chain transformers (e.g.
.trim()
,.toIntStrict()
) and constraints (e.g..lengthMin(2)
,.email()
,.gt(0)
). - For maps/lists, use
.schema({...})
and.each(...)
to nest. - Call
.build()
to get a reusable validator.
Example
final userValidator = $map().schema({
'id': $string().trim().toIntStrict().gt(0).build(),
'email': $string().trim().toLowerCase().email().build(),
'age': $string().toIntStrict().gte(18).optional().build(),
}).build();
final result = userValidator.validate({
'id': '42',
'email': 'someone@example.com',
'age': '21',
});
if (result.isValid) {
print('Valid user');
} else {
print(result.detailed());
}
Features
- Type-specific builder classes:
StringBuilder
,IntBuilder
,MapBuilder
, etc. - Transformers:
.trim()
,.toIntStrict()
,.toLowerCase()
,.toDateTime()
, etc. - Constraints:
.lengthMin()
,.email()
,.gt()
,.oneOf([...])
, etc. - Structure:
.map().schema({...})
,.list().each(...)
,.optional()
,.nullable()
- Custom: add your own via
.add(...)
or.wrap(...)
or extension methods. - Message override:
.error('msg')
or> 'msg'
after build. - Operator sugar:
&
,|
,>
for AND, OR, message override.
Extensibility
- Add custom transformers or constraints via extension methods on builder classes.
- Compose with functional validators and combinators.
Performance
- Validators are built once and reused.
- Zero-arg cached validators available as
$isString
,$isEmail
, etc.
See exported files for low-level implementation details.
Classes
-
BaseBuilder<
B extends BaseBuilder< B, T> , T> - Base functionality shared by all typed builders.
- BoolBuilder
- Builder for boolean validations with boolean-specific methods.
- Chain
- Internal accumulator for a builder chain.
- CustomPivot
- Represents a custom pivot for extensibility.
- DateTimeBuilder
- Builder for DateTime validations with date/time-specific methods.
- DoubleBuilder
- Builder for double validations, inherits from NumberBuilder.
-
GenericBuilder<
T> - Generic builder that supports all validation methods.
- IntBuilder
- Builder for integer validations, inherits from NumberBuilder.
-
IterableBuilder<
T> - Builder for iterable validations with length and iteration methods.
- JsonDecodedBuilder
- Builder for JSON-decoded data with both map and iterable methods.
-
ListBuilder<
T> - Builder for list validations, inherits from IterableBuilder.
-
MapBuilder<
T, K> - Builder for map validations with map-specific methods.
- NumberBuilder
- Builder for number validations with numeric comparison methods.
- RootBuilder
- Root builder that provides entry points for different data types.
-
SetBuilder<
T> - Builder for set validations, inherits from IterableBuilder.
- StringBuilder
- Builder for string validations with string-specific methods.
Enums
- CoercionKind
- Kind of coercion applied to the chain (single pivot allowed).
Mixins
-
BoolMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing boolean-specific validation methods.
-
ComparisonMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing comparison validation methods.
-
ContainsMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing contains validation methods.
-
DateTimeMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing DateTime-specific validation methods.
-
EmptyMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing empty validation methods.
-
IterableMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing iterable-specific validation methods.
-
JsonMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing JSON-specific validation methods.
-
LengthMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing length validation methods.
-
MapMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing map-specific validation methods.
-
NumberMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing number-specific validation methods.
-
StringMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing string-specific validation methods.
-
TransformerMixin<
B extends BaseBuilder< B, T> , T> - Mixin providing type transformation methods for builders.
Properties
- $b ↔ RootBuilder
-
Pre-built builder instance. See builder.
getter/setter pair
- $builder ↔ RootBuilder
-
Pre-built builder instance. See builder.
getter/setter pair
Functions
-
$bool(
{String? message}) → BoolBuilder -
$double(
{String? message}) → DoubleBuilder -
$int(
{String? message}) → IntBuilder -
$iterable<
T> ({String? message}) → IterableBuilder< T> -
$list<
T> ({String? message}) → ListBuilder< T> -
$map<
K, V> ({String? message}) → MapBuilder< K, V> -
$number(
{String? message}) → NumberBuilder -
$set<
T> ({String? message}) → SetBuilder< T> -
$string(
{String? message}) → StringBuilder - Type specific builders
-
b(
) → RootBuilder - Create a new builder instance. See builder.
-
builder(
) → RootBuilder - Create a new builder instance. See builder.