skema
skema copied to clipboard
🛰 Skema provides a handy & composable way to validate / transform / purify the input data.
skema
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.
Install
npm i skema
Basic Usage
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'
Documentations
- API References
- APIs
- Builtin Types and How to Change Them
- Shape Definition
- Working Mode: Sync or Async
-
Assign a Property after
from()
- Error Handling
- Contributing
Many Examples
- Shape Definition
-
Type Definition
- Basic Validation | Live Demo🔬
- Async Validation | Live Demo🔬
- Multiple Validators
- Basic Usage of Setters
- Inherit Another Type
- Declare a Type Alias to Make a Shortcut (Live Demo🔬)
- Use Skema as the Strict Type Checker | Live Demo🔬
- Errors🔬
Related Packages
- @skema/basic The default built-in javascript types of skema.
License
MIT