@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
29 lines (27 loc) • 950 B
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, ...parents) {
let def = (0, _utils.simpleObjectClone)(definition);
delete def[_MetaFieldField.objectMetaFieldKey];
const tree = [];
parents.forEach(parent => {
if (!(0, _ObjectType.isObject)(parent)) {
throw new _utils.RuntimeError(`Failed to extend interface. Expected parent to be an Object.`, {
parent
});
}
// @ts-ignore
def = parent.clone(el => el.extendObjectDefinition(def).def());
tree.push(parent.nonNullId);
});
const object = (0, _ObjectType.createObjectType)(name, def);
object.__setMetaData('implements', tree);
return object;
}
//# sourceMappingURL=implementObject.js.map