UNPKG

nexus

Version:

Scalable, strongly typed GraphQL schema development

45 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveNexusMetaType = exports.isNexusMeta = exports.isNexusMetaTypeFn = exports.isNexusMetaTypeProp = exports.isNexusMetaType = exports.isNexusMetaBuild = exports.NEXUS_BUILD = exports.NEXUS_TYPE = void 0; const utils_1 = require("../utils"); const wrapping_1 = require("./wrapping"); /** Symbol marking an object as something that can provide Nexus schema definitions */ exports.NEXUS_TYPE = Symbol.for('@nexus/meta/NEXUS_TYPE'); exports.NEXUS_BUILD = Symbol.for('@nexus/meta/NEXUS_BUILD'); function isNexusMetaBuild(obj) { return Boolean(obj && typeof utils_1.ownProp.get(obj, exports.NEXUS_BUILD) === 'function'); } exports.isNexusMetaBuild = isNexusMetaBuild; function isNexusMetaType(obj) { return isNexusMetaTypeProp(obj) || isNexusMetaTypeFn(obj); } exports.isNexusMetaType = isNexusMetaType; function isNexusMetaTypeProp(obj) { return Boolean(obj && utils_1.ownProp.has(obj, exports.NEXUS_TYPE) && (0, wrapping_1.isNexusStruct)(utils_1.ownProp.get(obj, exports.NEXUS_TYPE))); } exports.isNexusMetaTypeProp = isNexusMetaTypeProp; function isNexusMetaTypeFn(obj) { return Boolean(obj && utils_1.ownProp.has(obj, exports.NEXUS_TYPE) && typeof utils_1.ownProp.get(obj, exports.NEXUS_TYPE) === 'function'); } exports.isNexusMetaTypeFn = isNexusMetaTypeFn; function isNexusMeta(obj) { return isNexusMetaBuild(obj) || isNexusMetaType(obj) || isNexusMetaTypeFn(obj); } exports.isNexusMeta = isNexusMeta; /** * Evaluates the thunk, replacing it with the type * * @param obj */ function resolveNexusMetaType(obj) { let value = utils_1.ownProp.get(obj, exports.NEXUS_TYPE); if (typeof value === 'function') { value = utils_1.ownProp.set(obj, exports.NEXUS_TYPE, value.call(obj)); } if (!(0, wrapping_1.isNexusObjectTypeDef)(value) && !(0, wrapping_1.isNexusInterfaceTypeDef)(value)) { throw new Error(`Expected property of NEXUS_TYPE to be an object or interface type`); } return value; } exports.resolveNexusMetaType = resolveNexusMetaType; //# sourceMappingURL=nexusMeta.js.map