graphql-composer
Version:
Create your GraphQL API using composition!
78 lines • 2.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnumType = void 0;
const graphql_1 = require("graphql");
const __1 = require("../../../..");
const GQLAnyType_1 = require("../../GQLAnyType");
class EnumType extends GQLAnyType_1.GQLAnyType {
constructor(name, enumType) {
super(name);
this._values = [];
if (enumType) {
this._enumType = enumType;
Object.keys(enumType).map((key) => {
this.addValues(__1.EnumValue.create(key, enumType[key]));
});
}
}
get enumType() {
return this._enumType;
}
get values() {
return this._values;
}
static create(name, enumType) {
return new EnumType(name, enumType);
}
/**
* Set the enum values
* @param values The values to add
*/
setValues(...values) {
this._values = values;
return this;
}
/**
* Add some enum values
* @param values The values to add
*/
addValues(...values) {
return this.setValues(...this._values, ...values);
}
/**
* Add a single enum value
* @param name the value name
* @param value the value
*/
addValue(name, value) {
return this.addValues(__1.EnumValue.create(name, value));
}
/**
* Remove some values from the enum
* @param values The values to remove
*/
removeValues(...values) {
return this.setValues(...__1.ArrayHelper.remove(values, this._values));
}
copy() {
return EnumType.create(this.name)
.addValues(...this._values)
.setExtensions(this.extensions)
.setDirectives(...this.directives);
}
build() {
const values = this._values.reduce((prev, value) => {
prev[value.name] = value.build();
delete prev[value.name]["isDeprecated"];
return prev;
}, {});
this._built = new graphql_1.GraphQLEnumType({
name: this.name,
description: this._description,
values,
});
return this.built;
}
}
exports.EnumType = EnumType;
//# sourceMappingURL=EnumType.js.map