Skip to content

Commit 6899c51

Browse files
committed
fix: wrapping logic in a conditional
1 parent cc5f5ab commit 6899c51

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

lib/dereference.ts

+14-10
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)