1- import  {  defaults ,  isNil ,  isNumber ,  isString ,  isArray ,  isFunction  }  from  "lodash" ; 
1+ import  {  defaults ,  isNil ,  isNumber ,  isInteger ,   isString ,  isArray ,  isFunction  }  from  "lodash" ; 
22import  fecha  from  "fecha" ; 
33
44let  resources  =  { 
@@ -8,6 +8,7 @@ let resources = {
88	numberTooSmall : "The number is too small! Minimum: {0}" , 
99	numberTooBig : "The number is too big! Maximum: {0}" , 
1010	invalidNumber : "Invalid number" , 
11+ 	invalidInteger : "The value is not an integer" , 
1112
1213	textTooSmall : "The length of text is too small! Current: {0}, Minimum: {1}" , 
1314	textTooBig : "The length of text is too big! Current: {0}, Maximum: {1}" , 
@@ -35,23 +36,26 @@ let resources = {
3536
3637function  checkEmpty ( value ,  required ,  messages  =  resources )  { 
3738	if  ( isNil ( value )  ||  value  ===  "" )  { 
38- 		if  ( required ) 
39+ 		if  ( required )   { 
3940			return  [ msg ( messages . fieldIsRequired ) ] ; 
40- 		else 
41+ 		}   else   { 
4142			return  [ ] ; 
43+ 		} 
4244	} 
4345	return  null ; 
4446} 
4547
4648function  msg ( text )  { 
47- 	if  ( text  !=  null  &&  arguments . length  >  1 ) 
48- 		for  ( let  i  =  1 ;  i  <  arguments . length ;  i ++ ) 
49+ 	if  ( text  !=  null  &&  arguments . length  >  1 )   { 
50+ 		for  ( let  i  =  1 ;  i  <  arguments . length ;  i ++ )   { 
4951			text  =  text . replace ( "{"  +  ( i  -  1 )  +  "}" ,  arguments [ i ] ) ; 
52+ 		} 
53+ 	} 
5054
5155	return  text ; 
5256} 
5357
54- module . exports  =  { 
58+ const   validators  =  { 
5559
5660	resources, 
5761
@@ -60,47 +64,59 @@ module.exports = {
6064	} , 
6165
6266	number ( value ,  field ,  model ,  messages  =  resources )  { 
63- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
67+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
68+ 		if  ( res  !=  null )  return  res ; 
6469
6570		let  err  =  [ ] ; 
6671		if  ( isNumber ( value ) )  { 
67- 			if  ( ! isNil ( field . min )  &&  value  <  field . min ) 
72+ 			if  ( ! isNil ( field . min )  &&  value  <  field . min )   { 
6873				err . push ( msg ( messages . numberTooSmall ,  field . min ) ) ; 
74+ 			} 
6975
70- 			if  ( ! isNil ( field . max )  &&  value  >  field . max ) 
76+ 			if  ( ! isNil ( field . max )  &&  value  >  field . max )   { 
7177				err . push ( msg ( messages . numberTooBig ,  field . max ) ) ; 
72- 
73- 		}  else  
78+ 			 } 
79+ 		}  else  { 
7480			err . push ( msg ( messages . invalidNumber ) ) ; 
81+ 		} 
7582
7683		return  err ; 
7784	} , 
7885
7986	integer ( value ,  field ,  model ,  messages  =  resources )  { 
80- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
87+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
88+ 		if  ( res  !=  null )  return  res ; 
89+ 		let  errs  =  validators . number ( value ,  field ,  model ,  messages ) ; 
8190
82- 		if  ( ! ( Number ( value )  ===  value  &&  value  %  1  ===  0 ) ) 
83- 			return  [ msg ( messages . invalidNumber ) ] ; 
91+ 		if  ( ! isInteger ( value ) )  { 
92+ 			errs . push ( msg ( messages . invalidInteger ) ) ; 
93+ 		} 
94+ 
95+ 		return  errs ; 
8496	} , 
8597
8698	double ( value ,  field ,  model ,  messages  =  resources )  { 
87- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
99+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
100+ 		if  ( res  !=  null )  return  res ; 
88101
89- 		if  ( ! isNumber ( value )  ||  isNaN ( value ) ) 
102+ 		if  ( ! isNumber ( value )  ||  isNaN ( value ) )   { 
90103			return  [ msg ( messages . invalidNumber ) ] ; 
104+ 		} 
91105	} , 
92106
93107	string ( value ,  field ,  model ,  messages  =  resources )  { 
94- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
108+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
109+ 		if  ( res  !=  null )  return  res ; 
95110
96111		let  err  =  [ ] ; 
97112		if  ( isString ( value ) )  { 
98- 			if  ( ! isNil ( field . min )  &&  value . length  <  field . min ) 
113+ 			if  ( ! isNil ( field . min )  &&  value . length  <  field . min )   { 
99114				err . push ( msg ( messages . textTooSmall ,  value . length ,  field . min ) ) ; 
115+ 			} 
100116
101- 			if  ( ! isNil ( field . max )  &&  value . length  >  field . max ) 
117+ 			if  ( ! isNil ( field . max )  &&  value . length  >  field . max )   { 
102118				err . push ( msg ( messages . textTooBig ,  value . length ,  field . max ) ) ; 
103- 
119+ 			 } 
104120		}  else  
105121			err . push ( msg ( messages . thisNotText ) ) ; 
106122
@@ -109,77 +125,89 @@ module.exports = {
109125
110126	array ( value ,  field ,  model ,  messages  =  resources )  { 
111127		if  ( field . required )  { 
112- 
113- 			if  ( ! isArray ( value ) ) 
128+ 			if  ( ! isArray ( value ) )  { 
114129				return  [ msg ( messages . thisNotArray ) ] ; 
130+ 			} 
115131
116- 			if  ( value . length  ==  0 ) 
132+ 			if  ( value . length  ==  0 )   { 
117133				return  [ msg ( messages . fieldIsRequired ) ] ; 
134+ 			} 
118135		} 
119136
120137		if  ( ! isNil ( value ) )  { 
121- 			if  ( ! isNil ( field . min ) ) 
122- 				if   ( value . length   <   field . min ) 
123- 					 return   [ msg ( messages . selectMinItems ,   field . min ) ] ; 
138+ 			if  ( ! isNil ( field . min )   &&   value . length   <   field . min )   { 
139+ 				return   [ msg ( messages . selectMinItems ,   field . min ) ] ; 
140+ 			} 
124141
125- 			if  ( ! isNil ( field . max ) ) 
126- 				if   ( value . length   >   field . max ) 
127- 					 return   [ msg ( messages . selectMaxItems ,   field . max ) ] ; 
142+ 			if  ( ! isNil ( field . max )   &&   value . length   >   field . max )   { 
143+ 				return   [ msg ( messages . selectMaxItems ,   field . max ) ] ; 
144+ 			} 
128145		} 
129146	} , 	
130147
131148	date ( value ,  field ,  model ,  messages  =  resources )  { 
132- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
149+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
150+ 		if  ( res  !=  null )  return  res ; 
133151
134152		let  m  =  new  Date ( value ) ; 
135- 		if  ( ! m )  
153+ 		if  ( ! m )    { 
136154			return  [ msg ( messages . invalidDate ) ] ; 
155+ 		} 
137156
138157		let  err  =  [ ] ; 
139158
140159		if  ( ! isNil ( field . min ) )  { 
141160			let  min  =  new  Date ( field . min ) ; 
142- 			if  ( m . valueOf ( )  <  min . valueOf ( ) ) 
161+ 			if  ( m . valueOf ( )  <  min . valueOf ( ) )   { 
143162				err . push ( msg ( messages . dateIsEarly ,  fecha . format ( m ) ,  fecha . format ( min ) ) ) ; 
163+ 			} 
144164		} 
145165
146166		if  ( ! isNil ( field . max ) )  { 
147167			let  max  =  new  Date ( field . max ) ; 
148- 			if  ( m . valueOf ( )  >  max . valueOf ( ) ) 
168+ 			if  ( m . valueOf ( )  >  max . valueOf ( ) )   { 
149169				err . push ( msg ( messages . dateIsLate ,  fecha . format ( m ) ,  fecha . format ( max ) ) ) ; 
170+ 			} 
150171		} 
151172
152173		return  err ; 
153174	} , 
154175
155176	regexp ( value ,  field ,  model ,  messages  =  resources )  { 
156- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
177+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
178+ 		if  ( res  !=  null )  return  res ; 
157179
158180		if  ( ! isNil ( field . pattern ) )  { 
159181			let  re  =  new  RegExp ( field . pattern ) ; 
160- 			if  ( ! re . test ( value ) ) 
182+ 			if  ( ! re . test ( value ) )   { 
161183				return  [ msg ( messages . invalidFormat ) ] ; 
184+ 			} 
162185		} 
163186	} , 
164187
165188	email ( value ,  field ,  model ,  messages  =  resources )  { 
166- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
189+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
190+ 		if  ( res  !=  null )  return  res ; 
167191
168192		let  re  =  / ^ ( ( [ ^ < > ( ) \[ \] \\ . , ; : \s @ " ] + ( \. [ ^ < > ( ) \[ \] \\ . , ; : \s @ " ] + ) * ) | ( " .+ " ) ) @ ( ( \[ [ 0 - 9 ] { 1 , 3 } \. [ 0 - 9 ] { 1 , 3 } \. [ 0 - 9 ] { 1 , 3 } \. [ 0 - 9 ] { 1 , 3 } ] ) | ( ( [ a - z A - Z \- 0 - 9 ] + \. ) + [ a - z A - Z ] { 2 , } ) ) $ / ;  // eslint-disable-line no-useless-escape 
169- 		if  ( ! re . test ( value ) ) 
193+ 		if  ( ! re . test ( value ) )   { 
170194			return  [ msg ( messages . invalidEmail ) ] ; 
195+ 		} 
171196	} , 	
172197
173198	url ( value ,  field ,  model ,  messages  =  resources )  { 
174- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
199+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
200+ 		if  ( res  !=  null )  return  res ; 
175201
176202		let  re  =  / h t t p s ? : \/ \/ ( w w w \. ) ? [ - a - z A - Z 0 - 9 @ : % . _ \+ ~ # = ] { 2 , 256 } \. [ a - z ] { 2 , 4 } \b ( [ - a - z A - Z 0 - 9 @ : % _ \+ . ~ # ? & / / = ] * ) / g;  // eslint-disable-line no-useless-escape 
177- 		if  ( ! re . test ( value ) ) 
203+ 		if  ( ! re . test ( value ) )   { 
178204			return  [ msg ( messages . invalidURL ) ] ; 
205+ 		} 
179206	} , 	
180207
181208	creditCard ( value ,  field ,  model ,  messages  =  resources )  { 
182- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
209+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
210+ 		if  ( res  !=  null )  return  res ; 
183211
184212		/*  From validator.js code  
185213			https://github.com/chriso/validator.js/blob/master/src/lib/isCreditCard.js 
@@ -209,27 +237,34 @@ module.exports = {
209237			shouldDouble  =  ! shouldDouble ; 
210238		} 
211239
212- 		if  ( ! ( ( sum  %  10 )  ===  0  ? sanitized  : false ) ) 
240+ 		if  ( ! ( ( sum  %  10 )  ===  0  ? sanitized  : false ) )   { 
213241			return  [ msg ( messages . invalidCardNumber ) ] ; 
242+ 		} 
214243	} , 
215244
216245	alpha ( value ,  field ,  model ,  messages  =  resources )  { 
217- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
246+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
247+ 		if  ( res  !=  null )  return  res ; 
218248
219249		let  re  =  / ^ [ a - z A - Z ] * $ / ; 		
220- 		if  ( ! re . test ( value ) ) 
250+ 		if  ( ! re . test ( value ) )   { 
221251			return  [ msg ( messages . invalidTextContainNumber ) ] ; 
252+ 		} 
222253	} , 
223254
224255	alphaNumeric ( value ,  field ,  model ,  messages  =  resources )  { 
225- 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  if  ( res  !=  null )  return  res ; 
256+ 		let  res  =  checkEmpty ( value ,  field . required ,  messages ) ;  
257+ 		if  ( res  !=  null )  return  res ; 
226258
227259		let  re  =  / ^ [ a - z A - Z 0 - 9 ] * $ / ; 	
228- 		if  ( ! re . test ( value ) ) 
260+ 		if  ( ! re . test ( value ) )   { 
229261			return  [ msg ( messages . invalidTextContainSpec ) ] ; 
262+ 		} 
230263	} 
231264} ; 
232265
266+ module . exports  =  validators ; 
267+ 
233268Object . keys ( module . exports ) . forEach ( name  =>  { 
234269	const  fn  =  module . exports [ name ] ; 
235270	if  ( isFunction ( fn ) )  { 
0 commit comments