Compare commits
	
		
			14 Commits
		
	
	
		
			release/0.
			...
			develop
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c767e73f0a | |||
| 7d8256a6d6 | |||
| b282f241a6 | |||
| 0bfa3b32bd | |||
| b684a0e35e | |||
| d18c7cbad4 | |||
| 4ae4427e8e | |||
| a0e117c540 | |||
| 109f8a9655 | |||
| 8645d9914b | |||
| 057466c952 | |||
| 564578c160 | |||
| e399cb0e30 | |||
| 6fe8069868 | 
| @ -1,5 +1,13 @@ | |||||||
| # ChangeLog | # 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) | ## 2020-06-11 (0.0.5) | ||||||
| 
 | 
 | ||||||
| - modify types require method | - modify types require method | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "mtfos-validator", |   "name": "mtfos-validator", | ||||||
|   "version": "0.0.5", |   "version": "0.0.7", | ||||||
|   "description": "", |   "description": "", | ||||||
|   "main": "index.js", |   "main": "index.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| const Base = require('./base.js') | const Base = require('./base.js') | ||||||
| const util = require('util') | const util = require('util') | ||||||
|  | const validate = require('../validate.js') | ||||||
| 
 | 
 | ||||||
| class TypeArray extends Base { | class TypeArray extends Base { | ||||||
|   constructor () { |   constructor () { | ||||||
| @ -8,6 +9,10 @@ class TypeArray extends Base { | |||||||
|     this._empty = false |     this._empty = false | ||||||
|     this._min = null |     this._min = null | ||||||
|     this._max = null |     this._max = null | ||||||
|  |     /** | ||||||
|  |      * @type {Base[]} | ||||||
|  |      */ | ||||||
|  |     this._itemTypes = [] | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
| @ -30,6 +35,11 @@ class TypeArray extends Base { | |||||||
|     return this |     return this | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   items (...args) { | ||||||
|  |     this._itemTypes.push(...args) | ||||||
|  |     return this | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   /** |   /** | ||||||
|    * set max length |    * set max length | ||||||
|    * @param {number} num |    * @param {number} num | ||||||
| @ -50,6 +60,25 @@ class TypeArray extends Base { | |||||||
|     if (!this._empty && value.length === 0) return `not allow empty` |     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._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._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 |     return null | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,7 @@ | |||||||
| /* eslint-disable no-undef */ | /* eslint-disable no-undef */ | ||||||
| const TypeArray = require('./array.js') | const TypeArray = require('./array.js') | ||||||
|  | const TypeString = require('./string.js') | ||||||
|  | const TypeObject = require('./object.js') | ||||||
| 
 | 
 | ||||||
| describe('test validate schema type array', () => { | describe('test validate schema type array', () => { | ||||||
|   function throwFunc (val) { |   function throwFunc (val) { | ||||||
| @ -59,4 +61,15 @@ describe('test validate schema type array', () => { | |||||||
| 
 | 
 | ||||||
|     expect(throwFunc(arr.validate([1, 2, 3]))).toThrow() |     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', {}])) | ||||||
|  |   }) | ||||||
| }) | }) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user