github

kaelzhang / skema

  • среда, 31 января 2018 г. в 03:14:56
https://github.com/kaelzhang/skema


🛰 JavaScript Data Checker and Purifier.



Build Status Coverage

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

🔬 Live Demo with JsFiddle

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'

Many Examples

Documentations

Related Packages

  • @skema/basic The default built-in javascript types of skema.

License

MIT