graphql-composer
Version:
Create your GraphQL API using composition!
79 lines • 2.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Args = void 0;
const __1 = require("../../..");
const GQLBasicType_1 = require("./GQLBasicType");
class Args extends GQLBasicType_1.GQLBasicType {
constructor(classTypeOrInputType) {
super();
this._args = [];
if (classTypeOrInputType instanceof __1.InputType) {
this.addArgs(...classTypeOrInputType.fields.map((f) => {
return __1.Arg.create(f.name, f.type);
}))
.setExtensions(classTypeOrInputType.extensions)
.setDirectives(...classTypeOrInputType.directives);
}
else {
this._classType = classTypeOrInputType;
}
}
get classType() {
return this._classType;
}
get args() {
return this._args;
}
static create(classTypeOrInputTypeOrName, type) {
if (type) {
const args = new Args();
return args.addArgs(__1.Arg.create(classTypeOrInputTypeOrName, type));
}
return new Args(classTypeOrInputTypeOrName);
}
/**
* Set the arguments list of the type
* @param args The arguments list
*/
setArgs(...args) {
this._args = args.filter((a) => a);
return this;
}
/**
* Add some arguments in the type
* @param name The argument name
* @param type The argument type
*/
addArgs(...args) {
return this.setArgs(...this.args, ...args);
}
/**
* Remove some arguments in the type
* @param args The argument IDs
*/
removeArgs(...args) {
return this.setArgs(...__1.ArrayHelper.remove(args, this._args));
}
/**
* Add a suffix to the name ("Args" by default)
* @param suffix The suffix to add @default "Args"
*/
suffix(suffix = "Args") {
this.setName(this.name + suffix);
}
build() {
this._built = this._args.map((a) => a.build());
return this.built;
}
/**
* Copy the args type
*/
copy() {
return Args.create()
.setArgs(...this.args)
.setDescription(this.description)
.setExtensions(this.extensions);
}
}
exports.Args = Args;
//# sourceMappingURL=Args.js.map