@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
34 lines (32 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.implementObject = implementObject;
var _utils = require("@backland/utils");
var _ObjectType = require("./ObjectType");
var _MetaFieldField = require("./fields/MetaFieldField");
function implementObject(name, definition) {
var def = (0, _utils.simpleObjectClone)(definition);
delete def[_MetaFieldField.objectMetaFieldKey];
var tree = [];
for (var _len = arguments.length, parents = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
parents[_key - 2] = arguments[_key];
}
parents.forEach(function (parent) {
if (!(0, _ObjectType.isObject)(parent)) {
throw new _utils.RuntimeError("Failed to extend interface. Expected parent to be an Object.", {
parent: parent
});
}
// @ts-ignore
def = parent.clone(function (el) {
return el.extendObjectDefinition(def).def();
});
tree.push(parent.nonNullId);
});
var object = (0, _ObjectType.createObjectType)(name, def);
object.__setMetaData('implements', tree);
return object;
}
//# sourceMappingURL=implementObject.js.map