UNPKG

@naturalcycles/js-lib

Version:

Standard library for universal (browser + Node.js) javascript

28 lines (27 loc) 964 B
import { _uniq } from '../array/array.util.js'; import { _filterNullishValues } from '../object/object.util.js'; /** * Merges s2 into s1 (mutates s1) and returns s1. * Does not mutate s2. * API similar to Object.assign(s1, s2) */ export function mergeJsonSchemaObjects(s1, s2) { // Merge `properties` Object.entries(s2.properties).forEach(([k, v]) => { ; s1.properties[k] = v; }); // Merge `patternProperties` Object.entries(s2.patternProperties || {}).forEach(([k, v]) => { ; s1.patternProperties[k] = v; }); s1.propertyNames = s2.propertyNames || s1.propertyNames; s1.minProperties = s2.minProperties ?? s1.minProperties; s1.maxProperties = s2.maxProperties ?? s1.maxProperties; // Merge `required` s1.required.push(...s2.required); s1.required = _uniq(s1.required).sort(); // `additionalProperties` remains the same return _filterNullishValues(s1, { mutate: true }); }