@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
74 lines (73 loc) • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extendType = extendType;
var _utils = require("@backland/utils");
var _CircularDeps = require("./CircularDeps");
var _ObjectType = require("./ObjectType");
var _MetaFieldField = require("./fields/MetaFieldField");
function extendType(input) {
const clone = (0, _utils.wrapError)(() => {
const parsed = (0, _ObjectType.parseField)(input);
const withoutCache = (0, _ObjectType.deleteCachedFieldInstance)(parsed);
return (0, _utils.simpleObjectClone)(withoutCache);
}, extendType);
const res = {
def() {
return clone;
},
extend(arg) {
const ext = typeof arg === 'function' ? arg(res.def()) : arg;
(0, _utils.assertEqual)((0, _utils.getTypeName)(ext), 'Object');
return extendType({
...clone,
...arg
});
},
graphType(name) {
const def = res.def();
return name ? _CircularDeps.CircularDeps.createType(name, def) : _CircularDeps.CircularDeps.createType(def);
},
objectType(name) {
const {
def,
type
} = res.def();
if (type !== 'object') {
throw new Error(`Can't convert "${type}" to ObjectType.`);
}
if (_MetaFieldField.objectMetaFieldKey in def) {
delete def[_MetaFieldField.objectMetaFieldKey];
}
return name ? _CircularDeps.CircularDeps.ObjectType.createObjectType(name, def) : _CircularDeps.CircularDeps.ObjectType.createObjectType(def);
},
optional() {
return extendType({
...clone,
optional: true
});
},
required() {
return extendType({
...clone,
optional: false
});
},
list() {
return extendType({
array: {
of: clone
}
});
},
single() {
return extendType({
...clone,
list: false
});
}
};
return res;
}
//# sourceMappingURL=extendType.js.map