@@ -126,22 +126,26 @@ function crawl<S extends object = JSONSchema, O extends ParserOptions<S> = Parse
126126 // If we have properties we want to preserve from our dereferenced schema then we need
127127 // to copy them over to our new object.
128128 const preserved : Map < string , unknown > = new Map ( ) ;
129- if ( typeof obj [ key ] === "object" && ! Array . isArray ( obj [ key ] ) ) {
130- ( derefOptions ?. preservedProperties || [ ] ) . forEach ( ( prop ) => {
131- if ( prop in obj [ key ] ) {
132- preserved . set ( prop , obj [ key ] [ prop ] ) ;
133- }
134- } ) ;
129+ if ( derefOptions ?. preservedProperties ) {
130+ if ( typeof obj [ key ] === "object" && ! Array . isArray ( obj [ key ] ) ) {
131+ derefOptions ?. preservedProperties . forEach ( ( prop ) => {
132+ if ( prop in obj [ key ] ) {
133+ preserved . set ( prop , obj [ key ] [ prop ] ) ;
134+ }
135+ } ) ;
136+ }
135137 }
136138
137139 obj [ key ] = dereferenced . value ;
138140
139141 // If we have data to preserve and our dereferenced object is still an object then
140142 // we need copy back our preserved data into our dereferenced schema.
141- if ( preserved . size && typeof obj [ key ] === "object" && ! Array . isArray ( obj [ key ] ) ) {
142- preserved . forEach ( ( value , prop ) => {
143- obj [ key ] [ prop ] = value ;
144- } ) ;
143+ if ( derefOptions ?. preservedProperties ) {
144+ if ( preserved . size && typeof obj [ key ] === "object" && ! Array . isArray ( obj [ key ] ) ) {
145+ preserved . forEach ( ( value , prop ) => {
146+ obj [ key ] [ prop ] = value ;
147+ } ) ;
148+ }
145149 }
146150
147151 derefOptions ?. onDereference ?.( value . $ref , obj [ key ] , obj , key ) ;
0 commit comments