UNPKG

graphql-composer

Version:
79 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UnionType = void 0; const graphql_1 = require("graphql"); const __1 = require("../../.."); const GQLAnyType_1 = require("../GQLAnyType"); class UnionType extends GQLAnyType_1.GQLAnyType { constructor(name, ...types) { super(name); this._types = []; this._typeResolver = this.defaultTypeResolver.bind(this); this.setTypes(...types); } get types() { return this._types; } get typeResolver() { return this._typeResolver; } static create(name, ...types) { return new UnionType(name, ...types); } /** * Set the union type resolver * @param typeResolver the type resolver function */ setTypeResolver(typeResolver) { this._typeResolver = typeResolver; return this; } /** * Set the types of the union * @param types The types of the union */ setTypes(...types) { this._types = types; return this; } /** * Add some types to the union * @param types The types to add */ addTypes(...types) { return this.setTypes(...this._types, ...types); } /** * Remove some types to the union * @param types The types to remove */ removeTypes(...types) { return this.setTypes(...__1.ArrayHelper.remove(types, this._types)); } /** * Copy the UnionType */ copy() { return UnionType.create(this.name) .addTypes(...this._types) .setExtensions(this.extensions) .setDirectives(...this.directives); } build() { this._built = new graphql_1.GraphQLUnionType({ name: this.name, resolveType: this._typeResolver, description: this._description, types: () => { return this._types.map((t) => t.built); }, extensions: this.extensions, }); return this.built; } defaultTypeResolver(obj) { return __1.TypeResolver.resolve(obj, this._types); } } exports.UnionType = UnionType; //# sourceMappingURL=UnionType.js.map