Compare commits
19 Commits
Author | SHA1 | Date |
---|---|---|
Jay | c767e73f0a | |
Jay | 7d8256a6d6 | |
Jay | b282f241a6 | |
Jay | 0bfa3b32bd | |
Jay | b684a0e35e | |
Jay | d18c7cbad4 | |
Jay | 4ae4427e8e | |
Jay | a0e117c540 | |
Jay | 109f8a9655 | |
Jay | 8645d9914b | |
Jay | c1b8985461 | |
Jay | 8c3f9da11a | |
Jay | ca57604da8 | |
Jay | 1f605ce18e | |
Jay | 057466c952 | |
Jay | 47348064c2 | |
Jay | 93fe5b3f7f | |
Jay | 0dae994202 | |
Jay | d2456c2844 |
17
CHANGELOG.md
17
CHANGELOG.md
|
@ -1,5 +1,22 @@
|
|||
# ChangeLog
|
||||
|
||||
## 2020-07-05 (0.0.7)
|
||||
|
||||
- fix array check contains type
|
||||
|
||||
## 2020-07-04 (0.0.6)
|
||||
|
||||
- add array validate contains type
|
||||
|
||||
## 2020-06-11 (0.0.5)
|
||||
|
||||
- modify types require method
|
||||
|
||||
## 2020-06-11 (0.0.4)
|
||||
|
||||
- modify types export
|
||||
- add package repository
|
||||
|
||||
## 2020-06-10 (0.0.3)
|
||||
|
||||
- add types init value
|
||||
|
|
19
index.js
19
index.js
|
@ -1,14 +1,19 @@
|
|||
const types = require('./types/index.js')
|
||||
const TypeBase = require('./types/base.js')
|
||||
const TypeString = require('./types/string.js')
|
||||
const TypeNumber = require('./types/number.js')
|
||||
const TypeBoolean = require('./types/boolean.js')
|
||||
const TypeArray = require('./types/array.js')
|
||||
const TypeObject = require('./types/object.js')
|
||||
const validate = require('./validate.js')
|
||||
const validator = {}
|
||||
module.exports = validator
|
||||
|
||||
validator.Base = types.Base
|
||||
validator.string = (...args) => new types.StringType(...args)
|
||||
validator.number = (...args) => new types.NumberType(...args)
|
||||
validator.boolean = (...args) => new types.BooleanType(...args)
|
||||
validator.array = (...args) => new types.ArrayType(...args)
|
||||
validator.object = (...args) => new types.ObjectType(...args)
|
||||
validator.Base = TypeBase
|
||||
validator.string = (...args) => new TypeString(...args)
|
||||
validator.number = (...args) => new TypeNumber(...args)
|
||||
validator.boolean = (...args) => new TypeBoolean(...args)
|
||||
validator.array = (...args) => new TypeArray(...args)
|
||||
validator.object = (...args) => new TypeObject(...args)
|
||||
|
||||
/**
|
||||
* validate
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mtfos-validator",
|
||||
"version": "0.0.3",
|
||||
"version": "0.0.7",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
@ -12,5 +12,9 @@
|
|||
"devDependencies": {
|
||||
"jest": "^26.0.1",
|
||||
"standard": "^12.0.1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.trj.tw/nodejs/validator.git"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const Base = require('./base.js')
|
||||
const util = require('util')
|
||||
const validate = require('../validate.js')
|
||||
|
||||
class TypeArray extends Base {
|
||||
constructor () {
|
||||
|
@ -8,6 +9,10 @@ class TypeArray extends Base {
|
|||
this._empty = false
|
||||
this._min = null
|
||||
this._max = null
|
||||
/**
|
||||
* @type {Base[]}
|
||||
*/
|
||||
this._itemTypes = []
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -30,6 +35,11 @@ class TypeArray extends Base {
|
|||
return this
|
||||
}
|
||||
|
||||
items (...args) {
|
||||
this._itemTypes.push(...args)
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* set max length
|
||||
* @param {number} num
|
||||
|
@ -50,6 +60,25 @@ class TypeArray extends Base {
|
|||
if (!this._empty && value.length === 0) return `not allow empty`
|
||||
if (this._min !== null && value.length < this._min) return `value length < ${this._min}`
|
||||
if (this._max !== null && value.length > this._max) return `value length > ${this._max}`
|
||||
|
||||
if (this._itemTypes.length > 0) {
|
||||
for (const item of value) {
|
||||
let verified = false
|
||||
let fail = ''
|
||||
for (const type of this._itemTypes) {
|
||||
const result = type.validate(item)
|
||||
if (result) {
|
||||
fail = result
|
||||
} else {
|
||||
verified = true
|
||||
fail = ''
|
||||
break
|
||||
}
|
||||
}
|
||||
if (!verified || fail) return fail || `item type not match`
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/* eslint-disable no-undef */
|
||||
const TypeArray = require('./array.js')
|
||||
const TypeString = require('./string.js')
|
||||
const TypeObject = require('./object.js')
|
||||
|
||||
describe('test validate schema type array', () => {
|
||||
function throwFunc (val) {
|
||||
|
@ -59,4 +61,15 @@ describe('test validate schema type array', () => {
|
|||
|
||||
expect(throwFunc(arr.validate([1, 2, 3]))).toThrow()
|
||||
})
|
||||
|
||||
it('test array contains value', async () => {
|
||||
const arr = new TypeArray().items(new TypeString())
|
||||
|
||||
expect(throwFunc(arr.validate([1, 2, 3]))).toThrow()
|
||||
throwFunc(arr.validate(['asd']))
|
||||
|
||||
const arr2 = new TypeArray().items(new TypeString(), new TypeObject())
|
||||
expect(throwFunc(arr2.validate([123, true]))).toThrow()
|
||||
throwFunc(arr2.validate(['asd', '33', {}]))
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,15 +1,8 @@
|
|||
const Base = require('./base.js')
|
||||
const StringType = require('./string.js')
|
||||
const NumberType = require('./number.js')
|
||||
const BooleanType = require('./boolean.js')
|
||||
const ObjectType = require('./object.js')
|
||||
const ArrayType = require('./array.js')
|
||||
|
||||
module.exports = {
|
||||
Base,
|
||||
StringType,
|
||||
NumberType,
|
||||
BooleanType,
|
||||
ObjectType,
|
||||
ArrayType
|
||||
}
|
||||
const types = {}
|
||||
module.exports = types
|
||||
types.Base = require('./base.js')
|
||||
types.StringType = require('./string.js')
|
||||
types.NumberType = require('./number.js')
|
||||
types.BooleanType = require('./boolean.js')
|
||||
types.ObjectType = require('./object.js')
|
||||
types.ArrayType = require('./array.js')
|
||||
|
|
Loading…
Reference in New Issue