@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
27 lines (26 loc) • 989 B
JavaScript
import { RuntimeError } from '@backland/utils';
import { simpleObjectClone } from '@backland/utils';
import { createObjectType, isObject } from './ObjectType';
import { objectMetaFieldKey } from './fields/MetaFieldField';
export function implementObject(name, definition) {
var def = simpleObjectClone(definition);
delete def[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(parent => {
if (!isObject(parent)) {
throw new 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);
});
var object = createObjectType(name, def);
object.__setMetaData('implements', tree);
return object;
}
//# sourceMappingURL=implementObject.js.map