@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
31 lines (30 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeJsonSchemaObjects = mergeJsonSchemaObjects;
const index_1 = require("../index");
const object_util_1 = require("../object/object.util");
/**
* Merges s2 into s1 (mutates s1) and returns s1.
* Does not mutate s2.
* API similar to Object.assign(s1, s2)
*/
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 = (0, index_1._uniq)(s1.required).sort();
// `additionalProperties` remains the same
return (0, object_util_1._filterNullishValues)(s1, true);
}