skema
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
Numbercould 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
- Shape Definition
- Working Mode: Sync or Async
- Assign a Property after
from() - Error Handling
- Contributing
Many Examples
- Shape Definition
- Type Definition
- Errors🔬
Related Packages
- @skema/basic The default built-in javascript types of skema.
License
MIT
Related Packages
Vue adapter for valfuse-node — form, controller, and localization composables
Version History
| Version | Released | License |
|---|---|---|
| 9.5.5 | MIT | |
| 9.5.4 | MIT | |
| 9.5.1 | MIT | |
| 9.5.0 | MIT | |
| 9.4.3 | MIT | |
| 9.4.2 | MIT | |
| 9.4.1 | MIT | |
| 9.4.0 | MIT | |
| 9.3.9 | MIT | |
| 9.3.8 | MIT | |
| 9.3.7 | MIT | |
| 9.3.5 | MIT | |
| 9.3.4 | MIT | |
| 9.3.3 | MIT | |
| 9.3.1 | MIT | |
| 9.3.0 | MIT | |
| 9.2.1 | MIT | |
| 9.2.0 | MIT | |
| 9.1.2 | MIT | |
| 9.1.1 | MIT | |
| 9.1.0 | MIT | |
| 9.0.10 | MIT | |
| 9.0.9 | MIT | |
| 9.0.8 | MIT | |
| 9.0.7 | MIT | |
| 9.0.6 | MIT | |
| 9.0.5 | MIT | |
| 9.0.4 | MIT | |
| 9.0.3 | MIT | |
| 9.0.1 | MIT |
Showing the latest 30 of 64. See every release on npm