11import { defaults , isNil , isNumber , isString , isArray , isFunction } from "lodash" ;
22import fecha from "fecha" ;
33
4- function checkEmpty ( value , required , messages ) {
5- if ( isNil ( value ) || value === "" ) {
6- if ( required )
7- return [ msg ( messages . fieldIsRequired ) ] ;
8- else
9- return [ ] ;
10- }
11- return null ;
12- }
13-
14- function msg ( text ) {
15- if ( text != null && arguments . length > 1 )
16- for ( let i = 1 ; i < arguments . length ; i ++ )
17- text = text . replace ( / \{ \d + ?\} / , arguments [ i ] ) ;
18-
19- return text ;
20- }
21-
224let resources = {
235 fieldIsRequired : "This field is required!" ,
246 invalidFormat : "Invalid format!" ,
@@ -50,15 +32,34 @@ let resources = {
5032 invalidTextContainSpec : "Invalid text! Cannot contains special characters"
5133} ;
5234
35+
36+ function checkEmpty ( value , required , messages = resources ) {
37+ if ( isNil ( value ) || value === "" ) {
38+ if ( required )
39+ return [ msg ( messages . fieldIsRequired ) ] ;
40+ else
41+ return [ ] ;
42+ }
43+ return null ;
44+ }
45+
46+ function msg ( text ) {
47+ if ( text != null && arguments . length > 1 )
48+ for ( let i = 1 ; i < arguments . length ; i ++ )
49+ text = text . replace ( / \{ \d + ?\} / , arguments [ i ] ) ;
50+
51+ return text ;
52+ }
53+
5354module . exports = {
5455
5556 resources,
5657
57- required ( value , field , messages = resources ) {
58+ required ( value , field , model , messages = resources ) {
5859 return checkEmpty ( value , field . required , messages ) ;
5960 } ,
6061
61- number ( value , field , messages = resources ) {
62+ number ( value , field , model , messages = resources ) {
6263 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
6364
6465 let err = [ ] ;
@@ -75,21 +76,21 @@ module.exports = {
7576 return err ;
7677 } ,
7778
78- integer ( value , field , messages = resources ) {
79+ integer ( value , field , model , messages = resources ) {
7980 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
8081
8182 if ( ! ( Number ( value ) === value && value % 1 === 0 ) )
8283 return [ msg ( messages . invalidNumber ) ] ;
8384 } ,
8485
85- double ( value , field , messages = resources ) {
86+ double ( value , field , model , messages = resources ) {
8687 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
8788
8889 if ( ! isNumber ( value ) || isNaN ( value ) )
8990 return [ msg ( messages . invalidNumber ) ] ;
9091 } ,
9192
92- string ( value , field , messages = resources ) {
93+ string ( value , field , model , messages = resources ) {
9394 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
9495
9596 let err = [ ] ;
@@ -106,7 +107,7 @@ module.exports = {
106107 return err ;
107108 } ,
108109
109- array ( value , field , messages = resources ) {
110+ array ( value , field , model , messages = resources ) {
110111 if ( field . required ) {
111112
112113 if ( ! isArray ( value ) )
@@ -127,7 +128,7 @@ module.exports = {
127128 }
128129 } ,
129130
130- date ( value , field , messages = resources ) {
131+ date ( value , field , model , messages = resources ) {
131132 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
132133
133134 let m = new Date ( value ) ;
@@ -151,7 +152,7 @@ module.exports = {
151152 return err ;
152153 } ,
153154
154- regexp ( value , field , messages = resources ) {
155+ regexp ( value , field , model , messages = resources ) {
155156 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
156157
157158 if ( ! isNil ( field . pattern ) ) {
@@ -161,23 +162,23 @@ module.exports = {
161162 }
162163 } ,
163164
164- email ( value , field , messages = resources ) {
165+ email ( value , field , model , messages = resources ) {
165166 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
166167
167168 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 , } ) ) $ / ;
168169 if ( ! re . test ( value ) )
169170 return [ msg ( messages . invalidEmail ) ] ;
170171 } ,
171172
172- url ( value , field , messages = resources ) {
173+ url ( value , field , model , messages = resources ) {
173174 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
174175
175176 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;
176177 if ( ! re . test ( value ) )
177178 return [ msg ( messages . invalidURL ) ] ;
178179 } ,
179180
180- creditCard ( value , field , messages = resources ) {
181+ creditCard ( value , field , model , messages = resources ) {
181182 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
182183
183184 /* From validator.js code
@@ -212,15 +213,15 @@ module.exports = {
212213 return [ msg ( messages . invalidCardNumber ) ] ;
213214 } ,
214215
215- alpha ( value , field , messages = resources ) {
216+ alpha ( value , field , model , messages = resources ) {
216217 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
217218
218219 let re = / ^ [ a - z A - Z ] * $ / ;
219220 if ( ! re . test ( value ) )
220221 return [ msg ( messages . invalidTextContainNumber ) ] ;
221222 } ,
222223
223- alphaNumeric ( value , field , messages = resources ) {
224+ alphaNumeric ( value , field , model , messages = resources ) {
224225 let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
225226
226227 let re = / ^ [ a - z A - Z 0 - 9 ] * $ / ;
@@ -234,7 +235,7 @@ Object.keys(module.exports).forEach(name => {
234235 if ( isFunction ( fn ) ) {
235236 fn . locale = ( customMessages ) => {
236237 const messages = defaults ( customMessages , resources ) ;
237- return ( value , field ) => fn ( value , field , messages ) ;
238+ return ( value , field , model ) => fn ( value , field , model , messages ) ;
238239 } ;
239240 }
240241} ) ;
0 commit comments