skema
provides a handy and composable way to validate/transform JavaScript variables:
-
Supports both async and sync flows. Skema has two working modes to support either async or sync validators, setters, etc, making it capable with much more complicated challenges.
-
NOT only type checker. Unlike TypeScript, joi, and many others, Skema is not only a JavaScript type checker, but also a good solution for your Anti-Corruption Layer (ACL) to transform and purify the input data. And Skema could also be configured as a simple schema validator too.
-
Pluggable basic types. Even basic types such as
Number
could also be replaced and customized if using Skema. Actually, in the core of Skema, there is NOT a single definition of one type. -
Powerful custom types. Every single type is able to be customized that you can handle almost everything including descriptor, conditions, default values, validators and so on.
-
Composable structures. You could build a much bigger schema with the small ones into the whole world.
npm i skema
import {shape} from 'skema'
// Schema definitions are ONLY objects.
const User = shape({
id: 'number?',
name: String
})
// Then use these definitions to purify our data.
const user = User.from({
id: '1',
name: 'Steve'
})
console.log(user)
// {
// id: 1,
// name: 'Steve'
// }
user.id = 'boooom!'
// throw TypeError
// - message: 'not a number'
// - code: 'VALIDATION_FAILS'
- API References
- Shape Definition
- Working Mode: Sync or Async
- Assign a Property after
from()
- Error Handling
- Contributing
- Shape Definition
- Type Definition
- Errors🔬
- @skema/basic The default built-in javascript types of skema.
MIT