UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

74 lines (73 loc) 1.97 kB
"use strict"; 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