
Lightweight, intuitive validation offering a form DSL with typed field-to-error maps, composable/infix validators, inline input mapping (mapInput), SAM-friendly custom validators, and regex-cached zero-allocation performance.
The lightest, cleanest, and most intuitive validation library for Kotlin Multiplatform (Android, iOS, JVM).
formValidator): Validate entire DTOs and return typed field-to-error maps (FormValidationResult).and): Chain validators cleanly with RequiredValidator and EmailValidator.mapInput): Transform field values inline before validating (RequiredValidator.mapInput { it.trim() }).Validator { value -> ... }.Add the dependency to your commonMain source set in your KMP project:
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.github.maryam2070:validation:2.0.0")
}
}
}
}data class SignUpRequest(val email: String, val name: String)
enum class Field { EMAIL, NAME }
val signUpValidator = formValidator<SignUpRequest, Field, String> {
field(Field.EMAIL, SignUpRequest::email) {
trim()
required("Email is required")
email("Invalid email format")
}
field(Field.NAME, SignUpRequest::name) {
trim()
required("Name is required")
minLength(2, "Name must be at least 2 characters")
}
}
val result = signUpValidator.validate(request)
when (result) {
is FormValidationResult.Valid -> proceed()
is FormValidationResult.Invalid -> showErrors(result.errors) // Map<Field, String>
}This project is licensed under the MIT License - see the LICENSE file for details.
The lightest, cleanest, and most intuitive validation library for Kotlin Multiplatform (Android, iOS, JVM).
formValidator): Validate entire DTOs and return typed field-to-error maps (FormValidationResult).and): Chain validators cleanly with RequiredValidator and EmailValidator.mapInput): Transform field values inline before validating (RequiredValidator.mapInput { it.trim() }).Validator { value -> ... }.Add the dependency to your commonMain source set in your KMP project:
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.github.maryam2070:validation:2.0.0")
}
}
}
}data class SignUpRequest(val email: String, val name: String)
enum class Field { EMAIL, NAME }
val signUpValidator = formValidator<SignUpRequest, Field, String> {
field(Field.EMAIL, SignUpRequest::email) {
trim()
required("Email is required")
email("Invalid email format")
}
field(Field.NAME, SignUpRequest::name) {
trim()
required("Name is required")
minLength(2, "Name must be at least 2 characters")
}
}
val result = signUpValidator.validate(request)
when (result) {
is FormValidationResult.Valid -> proceed()
is FormValidationResult.Invalid -> showErrors(result.errors) // Map<Field, String>
}This project is licensed under the MIT License - see the LICENSE file for details.