11"use strict" ;
22var pJKeys = [ {
33 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 \- ] + $ / ) ; } ,
55 msg : 'must be kebabcased and start with "coderoad"' ,
66 example : 'coderoad-tutorial-name' ,
77 } , {
88 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 ] + $ / ) ; } ,
1010 msg : 'must be 3 numbers separated by dots' ,
1111 example : '0.1.0' ,
1212 } , {
@@ -21,7 +21,7 @@ var pJKeys = [{
2121 example : 'CodeRoad tutorial on ES2015 new features.'
2222 } , {
2323 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' ) ; } ,
2525 msg : 'must be an array containing "coderoad"' ,
2626 example : '["coderoad", "tutorial", "js"]' ,
2727 } , {
@@ -41,26 +41,26 @@ var pJKeys = [{
4141 example : '["coderoad.json", "tutorial"]' ,
4242 } , {
4343 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 ] + / ) ; } ,
4545 msg : 'must specify a valid node version' ,
4646 example : '"engines": { "node": ">=0.10.3"}' ,
4747 } , {
4848 name : 'language' ,
4949 config : true ,
50- validate : function ( lang ) { return typeof lang === 'string' && lang . length ; } ,
50+ validate : function ( lang ) { return typeof lang === 'string' && ! ! lang . length ; } ,
5151 msg : 'must specify a programming language' ,
5252 example : 'JS' ,
5353 } , {
5454 name : 'runner' ,
5555 config : true ,
56- validate : function ( runner ) { return typeof runner === 'string' && runner . length ; } ,
56+ validate : function ( runner ) { return typeof runner === 'string' && ! ! runner . length ; } ,
5757 msg : 'must specify a test runner' ,
5858 example : 'mocha-coderoad' ,
5959 } , {
6060 name : 'repository' ,
6161 optional : true ,
6262 validate : function ( repo ) {
63- return typeof repo === 'string' && repo . length ||
63+ return typeof repo === 'string' && ! ! repo . length ||
6464 typeof repo === 'object' && repo . hasOwnProperty ( 'type' )
6565 && typeof repo . type === 'string' &&
6666 repo . hasOwnProperty ( 'url' ) && typeof repo . url === 'string' ;
@@ -77,21 +77,21 @@ var pJKeys = [{
7777 } , {
7878 name : 'license' ,
7979 optional : true ,
80- validate : function ( license ) { return typeof license === 'string' && license . length ; } ,
80+ validate : function ( license ) { return typeof license === 'string' && ! ! license . length ; } ,
8181 msg : 'should have a valid license (ex: MIT, ISC, etc.)' ,
8282 example : 'MIT' ,
8383 } ] ;
8484function validatePackageJson ( pj ) {
8585 var errors = [ ] ;
8686 var warnings = [ ] ;
8787 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 } ) ;
9292 }
9393 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 } ) ;
9595 }
9696 }
9797 } ) ;
0 commit comments