@kbml-tentacles/forms-joi
v3.0.0
Published
Joi validation adapter for @kbml-tentacles/forms.
Maintainers
Readme
@kbml-tentacles/forms-joi
Joi validation adapter for @kbml-tentacles/forms. Plug a Joi schema into a field validator — every error detail (path, message, type) flows through unchanged.
npm install joi @kbml-tentacles/core @kbml-tentacles/forms @kbml-tentacles/forms-joiQuick start
import Joi from "joi";
import { createFormContract } from "@kbml-tentacles/forms";
import { joi, joiAsync } from "@kbml-tentacles/forms-joi";
const contract = createFormContract()
.field("email", (f) =>
f<string>().default("").validate(joi(Joi.string().email().required())),
)
.field("username", (f) =>
f<string>().default("").validateAsync(
joiAsync(
Joi.string().external(async (val) => {
if (!(await isAvailable(val))) throw new Error("Taken");
}),
),
),
);API
joi(schema)— sync validator usingschema.validate(value, { abortEarly: false }). Each Joi detail maps to{ path, message, code }.joiAsync(schema)— async validator usingschema.validateAsync(...). Pair with.validateAsync(...)for debounce + cancellation. Required if the schema uses.external(...)rules.
Documentation
- How-to: use a schema validator
- Reference:
docs/reference/validators
Peer dependencies
joi >=17.0@kbml-tentacles/core ^1.0.0@kbml-tentacles/forms ^1.0.0
License
MIT © Nikita Lumpov
