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