stuffer

Schema-based object validation.

Usage no npm install needed!

<script type="module">
  import stuffer from 'https://cdn.skypack.dev/stuffer';
</script>

README

stuffer

Build Status Standard - JavaScript Style Guide

Npm Info

综述

Schema-based object validation.

基于规则描述的数据校验以及补全工具.

安装

npm install stuffer --save

打包

请clone代码, 并在代码根目录下运行:

npm i
npm run build

生成的打包文件在.package目录中.

使用

@stuff

@stuff是用来在代码中声明函数参数检查规则的装饰器, 用法如下:

import { stuff, v } from 'stuffer'

class Foo {
  @stuff(v.isString(), v.isNumber())
  bar (str, num) {
    console.log(`Foo.bar: str=${str}, num=${num}.`)
  }
}

const foo = new Foo()

foo.bar('hello', 0)
foo.bar(0, 'hello') // => throw error

Stuffer

Stuffer是实现校验和补全功能的类, 如果你要校验补全的不是函数参数而是任意对象, 或者你要在@stuff中使用默认值补全功能, 请手工创建Stuffer实例.

使用方法

定义
import { Stuffer, v } from 'stuffer'

// 简单模式
const stf1 = new Stuffer(v.isString())

// 对象模式
const stf2 = new Stuffer({
  a: v.isString(),
  b: v.isNumber(),

  // 限制长度的数组
  c: [
    v.match(/\w\d/),
    v.within('[1-2]')
  ],

  //不限制长度的数组
  d: v.isArray(),
  
  // 不限制长度, 限制元素类型的数组
  e: v.isArrayOf(v.isString()),

  // 对象嵌套
  f: {
    a: v.isString(),
    b: v.isNumber()
  }
})

// 对象补全模式
const stf3 = new Stuffer({
  // 校验规则
  a: v.isString(),
  b: v.isNumber()
}, {
  // 默认值
  a: 'hello',
  b: 0
})

调用

const stf = new Stuffer({})
const obj = {}

// 直接调用
stf.exec(obj)

// 作为装饰器输入
class Foo {
  @stuff(stf)
  bar(obj) {
    // ...
  }
}

规则列表

本库使用param-check的校验规则实现. 目前可用规则如下:

among.js
equalOrLessThan.js
instanceOf.js
lessThan.js
or.js
and.js
got.js
is.js
map.js
patterns.js
equal.js
greaterThan.js
isArrayOf.js
match.js
same.js
equalOrGreaterThan.js
has.js
length.js
meet.js
within.js

如果需要自定义校验规则, 请阅读: https://github.com/yusangeng/param-check