UNPKG

swagger-object-validator

Version:

Validate your objects against a swagger spec and receive in-depth error traces

62 lines (61 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extendAllAllOfs = void 0; var Promise = require("bluebird"); var loader_1 = require("../helpers/loader"); function extendAllAllOfs(schema, config, spec) { if (!schema.allOf || !schema.allOf.length || schema.allOfResolved) { return Promise.resolve(schema); } var parentPromises = []; schema.allOf .filter(function (el) { return !el.allOfResolved; }) .forEach(function (parentObject) { var parentPromise; if (parentObject.$ref) { parentPromise = (0, loader_1.loadSchema)(parentObject, spec, config); } else { parentPromise = Promise.resolve(parentObject); } parentPromise .then(function (parentObject) { return extendAllAllOfs(parentObject, config, spec); }) .then(function (parentObject) { return extend(parentObject, schema); }); parentPromises.push(parentPromise); }); return Promise.all(parentPromises) .then(function (parents) { var result = parents.reduce(function (a, b) { return extend(b, a); }, schema); return result; }); } exports.extendAllAllOfs = extendAllAllOfs; function extend(from, to) { if (from.required) { if (to.required) { to.required = to.required.concat(from.required.filter(function (item) { return to.required.indexOf(item) === -1; })); } else { to.required = from.required; } } for (var propertyName in from.properties) { if (from.properties.hasOwnProperty(propertyName)) { var property = from.properties[propertyName]; if (!to.properties) { to.properties = {}; } if (!to.properties[propertyName]) { to.properties[propertyName] = property; } } } to.allOfResolved = true; return to; }