merge-json-schemas
Version:
Merge json schemas.
54 lines (37 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (jsonSchemas) {
(0, _assert2.default)((0, _lodash6.default)(jsonSchemas) && jsonSchemas.length >= 1, 'Must merge at least 1 JSON schema.');
return _lodash2.default.apply(undefined, [{}].concat(_toConsumableArray(jsonSchemas), [function (mergedValue, newValue, key) {
if ((0, _lodash4.default)(mergedValue)) {
return;
}
if (key === 'required') {
return (0, _lodash8.default)(mergedValue.concat(newValue));
}
if ((0, _lodash10.default)(mergedValue)) {
if (!(0, _lodash10.default)(newValue)) {
throw new Error('Failed to merge schemas because "' + key + '" has different values.');
}
return;
}
_assert2.default.deepEqual(mergedValue, newValue, 'Failed to merge schemas because "' + key + '" has different values: ' + JSON.stringify(mergedValue) + ' and ' + JSON.stringify(newValue) + '.');
}]));
};
var _assert = require('assert');
var _assert2 = _interopRequireDefault(_assert);
var _lodash = require('lodash.mergewith');
var _lodash2 = _interopRequireDefault(_lodash);
var _lodash3 = require('lodash.isnil');
var _lodash4 = _interopRequireDefault(_lodash3);
var _lodash5 = require('lodash.isarray');
var _lodash6 = _interopRequireDefault(_lodash5);
var _lodash7 = require('lodash.uniq');
var _lodash8 = _interopRequireDefault(_lodash7);
var _lodash9 = require('lodash.isplainobject');
var _lodash10 = _interopRequireDefault(_lodash9);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
module.exports = exports['default'];