@@ -126,22 +126,26 @@ function crawl<S extends object = JSONSchema, O extends ParserOptions<S> = Parse
126
126
// If we have properties we want to preserve from our dereferenced schema then we need
127
127
// to copy them over to our new object.
128
128
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
+ }
135
137
}
136
138
137
139
obj [ key ] = dereferenced . value ;
138
140
139
141
// If we have data to preserve and our dereferenced object is still an object then
140
142
// 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
+ }
145
149
}
146
150
147
151
derefOptions ?. onDereference ?.( value . $ref , obj [ key ] , obj , key ) ;
0 commit comments