@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
28 lines (27 loc) • 964 B
JavaScript
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 });
}