1
1
"use strict" ;
2
2
var pJKeys = [ {
3
3
name : 'name' ,
4
- validate : function ( name ) { return name . match ( / ^ c o d e r o a d - [ A - Z a - z 0 - 9 \- ] + $ / ) ; } ,
4
+ validate : function ( name ) { return ! ! name . match ( / ^ c o d e r o a d - [ A - Z a - z 0 - 9 \- ] + $ / ) ; } ,
5
5
msg : 'must be kebabcased and start with "coderoad"' ,
6
6
example : 'coderoad-tutorial-name' ,
7
7
} , {
8
8
name : 'version' ,
9
- validate : function ( version ) { return version . match ( / ^ [ 0 - 9 ] + \. [ 0 - 9 ] + \. [ 0 - 9 ] + $ / ) ; } ,
9
+ validate : function ( version ) { return ! ! version . match ( / ^ [ 0 - 9 ] + \. [ 0 - 9 ] + \. [ 0 - 9 ] + $ / ) ; } ,
10
10
msg : 'must be 3 numbers separated by dots' ,
11
11
example : '0.1.0' ,
12
12
} , {
@@ -21,7 +21,7 @@ var pJKeys = [{
21
21
example : 'CodeRoad tutorial on ES2015 new features.'
22
22
} , {
23
23
name : 'keywords' ,
24
- validate : function ( keywords ) { return Array . isArray ( keywords ) && keywords . length && keywords . includes ( 'coderoad' ) ; } ,
24
+ validate : function ( keywords ) { return Array . isArray ( keywords ) && ! ! keywords . length && keywords . includes ( 'coderoad' ) ; } ,
25
25
msg : 'must be an array containing "coderoad"' ,
26
26
example : '["coderoad", "tutorial", "js"]' ,
27
27
} , {
@@ -41,26 +41,26 @@ var pJKeys = [{
41
41
example : '["coderoad.json", "tutorial"]' ,
42
42
} , {
43
43
name : 'engines' ,
44
- validate : function ( engines ) { return typeof engines === 'object' && engines . node && engines . node . match ( / ^ [ > = ] ? [ 0 - 9 ] + / ) ; } ,
44
+ validate : function ( engines ) { return typeof engines === 'object' && ! ! engines . node && ! ! engines . node . match ( / ^ ( > = ) ? [ 0 - 9 ] + / ) ; } ,
45
45
msg : 'must specify a valid node version' ,
46
46
example : '"engines": { "node": ">=0.10.3"}' ,
47
47
} , {
48
48
name : 'language' ,
49
49
config : true ,
50
- validate : function ( lang ) { return typeof lang === 'string' && lang . length ; } ,
50
+ validate : function ( lang ) { return typeof lang === 'string' && ! ! lang . length ; } ,
51
51
msg : 'must specify a programming language' ,
52
52
example : 'JS' ,
53
53
} , {
54
54
name : 'runner' ,
55
55
config : true ,
56
- validate : function ( runner ) { return typeof runner === 'string' && runner . length ; } ,
56
+ validate : function ( runner ) { return typeof runner === 'string' && ! ! runner . length ; } ,
57
57
msg : 'must specify a test runner' ,
58
58
example : 'mocha-coderoad' ,
59
59
} , {
60
60
name : 'repository' ,
61
61
optional : true ,
62
62
validate : function ( repo ) {
63
- return typeof repo === 'string' && repo . length ||
63
+ return typeof repo === 'string' && ! ! repo . length ||
64
64
typeof repo === 'object' && repo . hasOwnProperty ( 'type' )
65
65
&& typeof repo . type === 'string' &&
66
66
repo . hasOwnProperty ( 'url' ) && typeof repo . url === 'string' ;
@@ -77,21 +77,21 @@ var pJKeys = [{
77
77
} , {
78
78
name : 'license' ,
79
79
optional : true ,
80
- validate : function ( license ) { return typeof license === 'string' && license . length ; } ,
80
+ validate : function ( license ) { return typeof license === 'string' && ! ! license . length ; } ,
81
81
msg : 'should have a valid license (ex: MIT, ISC, etc.)' ,
82
82
example : 'MIT' ,
83
83
} ] ;
84
84
function validatePackageJson ( pj ) {
85
85
var errors = [ ] ;
86
86
var warnings = [ ] ;
87
87
pJKeys . forEach ( function ( key ) {
88
- var target = pj . config ? pj . config : pj ;
89
- if ( ! target . hasOwnProperty ( key . name ) || key . validate ( target [ key . name ] ) ) {
90
- if ( ! key . optional ) {
91
- errors . push ( { name : key . name , msg : key . msg , example : key . example } ) ;
88
+ var target = key . config ? pj . config : pj ;
89
+ if ( ! target . hasOwnProperty ( key . name ) || ! key . validate ( target [ key . name ] ) ) {
90
+ if ( key . optional ) {
91
+ warnings . push ( { name : key . name , msg : key . msg , example : key . example } ) ;
92
92
}
93
93
else {
94
- warnings . push ( { name : key . name , msg : key . msg , example : key . example } ) ;
94
+ errors . push ( { name : key . name , msg : key . msg , example : key . example } ) ;
95
95
}
96
96
}
97
97
} ) ;
0 commit comments