@@ -723,7 +723,7 @@ function buildCode (location, code, laterCode, name) {
723
723
}
724
724
725
725
const schema = location . schema
726
- let required = schema . required
726
+ const required = schema . required || [ ]
727
727
728
728
Object . keys ( schema . properties || { } ) . forEach ( ( key , i , a ) => {
729
729
let propertyLocation = mergeLocation ( location , { schema : schema . properties [ key ] } )
@@ -777,14 +777,12 @@ function buildCode (location, code, laterCode, name) {
777
777
778
778
const defaultValue = schema . properties [ key ] . default
779
779
if ( defaultValue !== undefined ) {
780
- required = filterRequired ( required , key )
781
780
code += `
782
781
} else {
783
782
${ addComma }
784
783
json += ${ asString } + ':' + ${ JSON . stringify ( JSON . stringify ( defaultValue ) ) }
785
784
`
786
- } else if ( required && required . indexOf ( key ) !== - 1 ) {
787
- required = filterRequired ( required , key )
785
+ } else if ( required . includes ( key ) ) {
788
786
code += `
789
787
} else {
790
788
throw new Error('${ sanitized } is required!')
@@ -802,20 +800,9 @@ function buildCode (location, code, laterCode, name) {
802
800
}
803
801
} )
804
802
805
- if ( required && required . length > 0 ) {
806
- code += 'var required = ['
807
- // eslint-disable-next-line
808
- for ( var i = 0 ; i < required . length ; i ++ ) {
809
- if ( i > 0 ) {
810
- code += ','
811
- }
812
- code += `${ JSON . stringify ( required [ i ] ) } `
813
- }
814
- code += `]
815
- for (var i = 0; i < required.length; i++) {
816
- if (obj[required[i]] === undefined) throw new Error('"' + required[i] + '" is required!')
817
- }
818
- `
803
+ for ( const requiredProperty of required ) {
804
+ if ( schema . properties && schema . properties [ requiredProperty ] !== undefined ) continue
805
+ code += `if (obj['${ requiredProperty } '] === undefined) throw new Error('"${ requiredProperty } " is required!')\n`
819
806
}
820
807
821
808
if ( schema . allOf ) {
@@ -827,13 +814,6 @@ function buildCode (location, code, laterCode, name) {
827
814
return { code, laterCode }
828
815
}
829
816
830
- function filterRequired ( required , key ) {
831
- if ( ! required ) {
832
- return required
833
- }
834
- return required . filter ( k => k !== key )
835
- }
836
-
837
817
function buildCodeWithAllOfs ( location , code , laterCode , name ) {
838
818
if ( location . schema . allOf ) {
839
819
location . schema . allOf . forEach ( ( ss ) => {
0 commit comments