check-data
Advanced tools
Comparing version 4.0.0 to 4.0.1
@@ -13,3 +13,3 @@ ## 版本更新 | ||
* 修改错误定位文本的显示格式 √ | ||
* 修改错误定位信息的显示格式 √ | ||
@@ -29,1 +29,9 @@ * 新增值类型验证 √ | ||
<!-- * schema新增严格模式strict()方法 × --> | ||
## 4.0.1 | ||
* 取消Check.schema的name参数和内部引用,避免因为name同名,出现schema被覆盖的乱象。 | ||
* 修复错误定位信息中的显示路径错误 | ||
23
index.js
@@ -72,14 +72,14 @@ "use strict" | ||
// type为内置构造函数或字符串(字符串用于表示自定义数据类型) | ||
// type为内置数据类型 | ||
if (Types[options.type]) { | ||
let funObj = Types[options.type] | ||
let checks = Types[options.type] | ||
for (let name in options) { | ||
let fun = funObj[name] | ||
if (fun) { | ||
let func = checks[name] | ||
if (func) { | ||
let option = options[name] | ||
let { error, data: subData } = fun({ data, option, origin: this.origin }) | ||
let { error, data: subData } = func({ data, option, origin: this.origin }) | ||
if (error) { | ||
return { | ||
error: `${field}${error}` | ||
error: `${error}` | ||
} | ||
@@ -321,9 +321,8 @@ } | ||
* 避免同一个对象被多次重复的创建和销毁,实现options跨接口复用,在节省资源的同时,也增加了代码复用率 | ||
* @param {String} name schema名称 | ||
* @param {*} options 验证表达式 | ||
* @param {Object} extend 数据扩展选项 | ||
*/ | ||
Check.schema = function (name, options, extend) { | ||
Check.schema = function (options, extend) { | ||
Check[name] = function (data) { | ||
let schema = function (data) { | ||
return Check(data, options, extend) | ||
@@ -335,3 +334,3 @@ } | ||
*/ | ||
Check[name].strict = function () { | ||
schema.strict = function () { | ||
@@ -345,7 +344,7 @@ } | ||
*/ | ||
Check[name].loose = function () { | ||
schema.loose = function () { | ||
} | ||
return Check[name] | ||
return schema | ||
@@ -352,0 +351,0 @@ } |
{ | ||
"name": "check-data", | ||
"version": "4.0.0", | ||
"version": "4.0.1", | ||
"description": "JS数据验证、转换递归器", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -19,3 +19,3 @@ ### Install | ||
* `options` * - 待验证数据的结构镜像验证表达式,参考[验证表达式](###验证表达式)。 | ||
* `options` * - 待验证数据的结构镜像验证表达式,参考[验证表达式](#验证表达式)。 | ||
@@ -42,7 +42,7 @@ * `extend` *Objcte* - 数据扩展选项,根据输入数据生成新的数据结构(可选) | ||
> 验证表达式中判断一个对象节点是否为验证选项的唯一依据是检查对象中是否包含type属性,如果没有type则被视为对象结构。 | ||
验证表达式中判断一个对象节点是否为验证选项的唯一依据是检查对象中是否包含type属性,如果没有type则被视为对象结构。 | ||
> type作为验证表达式的内部保留关键字,应尽量避免在入参中包含同名的type属性,否则可能导致验证结果出现混乱。 | ||
type作为验证表达式的内部保留关键字,应尽量避免在入参中包含同名的type属性,否则可能导致验证结果出现混乱。 | ||
> 当使用数组表达式时,需要区分单数和复数模式,单数时会共享同一个子表达式,通常用于验证具有相似结构的子集。复数时为精确匹配模式,可以完整定义每个子集。 | ||
当使用数组表达式时,需要区分单数和复数模式,单数时会共享同一个子表达式,通常用于验证具有相似结构的子集。复数时为精确匹配模式,可以完整定义每个子集。 | ||
@@ -177,7 +177,5 @@ #### 通用选项 | ||
```js | ||
Check.schema(name, options) | ||
Check.schema(options, extend) | ||
``` | ||
* `name` *String* - schema名称 | ||
* `options` * - 验证表达式 | ||
@@ -192,3 +190,3 @@ | ||
```js | ||
let test = Check.schema('test', { | ||
let schema = Check.schema({ | ||
a: { | ||
@@ -216,7 +214,3 @@ a1: { | ||
let { error, data } = test(sample) | ||
// 或 | ||
let { error, data } = Check.test(sample) | ||
let { error, data } = schema(sample) | ||
``` | ||
@@ -223,0 +217,0 @@ |
@@ -12,3 +12,3 @@ "use strict" | ||
t.deepEqual(data, true, error); | ||
t.deepEqual(true, data, error); | ||
@@ -22,3 +22,6 @@ }); | ||
a: true, | ||
b: false, | ||
b: { | ||
b1: true, | ||
b2: false | ||
}, | ||
c: [true, false, true, true] | ||
@@ -30,4 +33,10 @@ } | ||
b: { | ||
type: Boolean, | ||
allowNull: false | ||
b1: { | ||
type: Boolean, | ||
allowNull: false | ||
}, | ||
b2: { | ||
type: Boolean, | ||
allowNull: false | ||
}, | ||
}, | ||
@@ -41,2 +50,2 @@ c: [Boolean] | ||
}); | ||
}) |
@@ -6,71 +6,33 @@ "use strict" | ||
let schema = Check.schema('demo', | ||
{ | ||
a: { | ||
a1: { | ||
type: Number, | ||
allowNull: false | ||
}, | ||
a2: { | ||
type: Number, | ||
allowNull: false | ||
} | ||
let schema = Check.schema({ | ||
a: { | ||
a1: { | ||
type: Number, | ||
allowNull: false | ||
}, | ||
b: Number, | ||
a2: { | ||
type: Number, | ||
allowNull: false | ||
} | ||
}, | ||
{ | ||
find({ a, b }) { | ||
return { | ||
c: a, | ||
d: b, | ||
} | ||
} | ||
} | ||
) | ||
b: Boolean, | ||
}) | ||
test('通过对象访问 A', t => { | ||
test(t => { | ||
let { error, data } = Check.demo({ | ||
let sample = { | ||
a: { | ||
a1: 999, | ||
a2: "12", | ||
a1: 4545, | ||
a2: 888, | ||
}, | ||
b: 2, | ||
c: 888, | ||
}) | ||
b: false | ||
} | ||
t.truthy(data, error); | ||
let { error, data } = schema(sample) | ||
}); | ||
// console.log(data) | ||
test('通过对象访问 B', t => { | ||
t.deepEqual(sample, data, error); | ||
let { error, data } = Check.demo({ | ||
a: { | ||
a1: 666, | ||
a2: "12", | ||
}, | ||
b: 344, | ||
c: 333, | ||
}) | ||
t.truthy(data, error); | ||
}); | ||
test('通过导出变量访问', t => { | ||
let { error, data } = schema({ | ||
a: { | ||
a1: 4545, | ||
a2: "888", | ||
}, | ||
b: 990, | ||
c: 1212, | ||
}) | ||
t.truthy(data, error); | ||
}); |
12
type.js
@@ -161,17 +161,17 @@ "use strict" | ||
}, | ||
[Date]: { | ||
[Boolean]: { | ||
type({ data }) { | ||
if (validator.toDate(data + '')) { | ||
if (typeof data === 'boolean') { | ||
return { data } | ||
} else { | ||
return { error: '必须为Date类型' } | ||
return { error: '必须为Boolean类型' } | ||
} | ||
}, | ||
}, | ||
[Boolean]: { | ||
[Date]: { | ||
type({ data }) { | ||
if (typeof data === 'boolean') { | ||
if (validator.toDate(data + '')) { | ||
return { data } | ||
} else { | ||
return { error: '必须为Boolean类型' } | ||
return { error: '必须为Date类型' } | ||
} | ||
@@ -178,0 +178,0 @@ }, |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
38379
949
499