@@ -25,8 +25,7 @@ const coreModel = Joi.object({
2525 publish_date : Joi
2626 . string ( )
2727 . regex ( / ^ \d { 4 } - \d { 2 } - \d { 2 } $ / )
28- . optional ( )
29- . isoDate ( ) ,
28+ . optional ( ) ,
3029 type : Joi . string ( ) . optional ( ) ,
3130 cvss_score : Joi . number ( ) . optional ( ) ,
3231 cvss : Joi . string ( ) . optional ( ) ,
@@ -43,9 +42,32 @@ const coreModel = Joi.object({
4342 . required ( )
4443} ) ;
4544
45+ const npmModel = Joi . object ( {
46+ id : Joi . number ( ) . required ( ) ,
47+ cves : Joi . array ( ) . items ( Joi . string ( ) . regex ( / C V E - \d { 4 } - \d + / ) ) . required ( ) ,
48+ created_at : Joi . string ( ) . regex ( / ^ \d { 4 } - \d { 2 } - \d { 2 } $ / ) . required ( ) ,
49+ updated_at : Joi . string ( ) . regex ( / ^ \d { 4 } - \d { 2 } - \d { 2 } $ / ) . required ( ) ,
50+ title : Joi . string ( ) . max ( 150 ) . regex ( / ^ [ ^ \n ] + $ / ) . required ( ) ,
51+ author : Joi . object ( {
52+ name : Joi . string ( ) . required ( ) ,
53+ username : Joi . string ( ) . required ( ) . allow ( null ) ,
54+ website : Joi . string ( ) . required ( ) . allow ( null )
55+ } ) ,
56+ module_name : Joi . string ( ) . required ( ) ,
57+ publish_date : Joi . string ( ) . regex ( / ^ \d { 4 } - \d { 2 } - \d { 2 } $ / ) . required ( ) ,
58+ vulnerable_versions : Joi . string ( ) . allow ( null ) . required ( ) ,
59+ patched_versions : Joi . string ( ) . allow ( null ) . required ( ) ,
60+ overview : Joi . string ( ) . required ( ) ,
61+ recommendation : Joi . string ( ) . allow ( null ) . required ( ) ,
62+ references : Joi . array ( ) . allow ( null ) . required ( ) ,
63+ cvss_vector : Joi . string ( ) . allow ( null ) . required ( ) ,
64+ cvss_score : Joi . number ( ) . allow ( null ) . required ( ) ,
65+ coordinating_vendor : Joi . string ( ) . allow ( null ) . required ( )
66+ } ) ;
67+
4668function validateVuln ( filePath , model ) {
4769 const vuln = JSON . parse ( fs . readFileSync ( filePath ) ) ;
48- const result = coreModel . validate ( vuln ) ;
70+ const result = model . validate ( vuln ) ;
4971 if ( result . error ) {
5072 console . error ( filePath , result . error ) ;
5173 throw result . error ;
@@ -64,6 +86,7 @@ function validate(dir, model) {
6486
6587module . exports = {
6688 coreModel,
89+ npmModel,
6790 validateVuln,
6891 validate
6992} ;
0 commit comments