UNPKG

@cran/gql.reflect

Version:

Cranberry Introspection Utilities for GraphQL

53 lines (52 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReflectProperty = void 0; const ReflectElement_1 = require("./ReflectElement"); const _TypeKind_1 = require("../input/_TypeKind"); class ReflectProperty extends ReflectElement_1.ReflectElement { source; fqdn; required; list; strict; typeName; constructor($, _, source) { super($, _); this.source = source; Object.assign(this, this.getModifiers()); this.fqdn = this.getFqdn(); } get type() { return this.$.types[this.typeName]; } getModifiers() { let type = this._.type; let required = false; let list = false; let strict = false; if (type.kind === _TypeKind_1._TypeKind.NON_NULL) { required = true; type = type.ofType; } if (type.kind === _TypeKind_1._TypeKind.LIST) { list = true; type = type.ofType; // TODO nested lists? if (type.kind === _TypeKind_1._TypeKind.NON_NULL) { strict = true; type = type.ofType; } } return { required, list, strict, typeName: type.name, }; } getFqdn() { let source = this.source; const path = [source.name,]; while (source instanceof ReflectProperty) { source = source.source; path.unshift(source.name); } return `${path.join(".")}.${this.name}`; } } exports.ReflectProperty = ReflectProperty;