type-graphql-utils v2.1.0
type-graphql-utils
This module provides utilities to transform type-graphql types.
Install
yarn install type-graphql-utilsUsage
import { Field, InputType, ObjectType } from 'type-graphql';
import { Pick, Partial } from 'type-graphql-utils';
@ObjectType()
class User {
@Field()
id!: number;
@Field()
name!: string;
@Field()
email!: string;
}type User {
id: String!
name: String!
email: String!
}@InputType()
class UserInput1 extends Partial(User) {
// extra fields
}input UserInput1 {
id: String
name: String
email: String
}@InputType()
class UserInput2 extends Pick(User, { name: 1 }) { }input UserInput2 {
name: String!
}@InputType()
class UserInput3 extends Required(Partial(User), { id: 1 }) {}input UserInput3 {
id: String!
name: String
email: String
}API
BaseClass: The type to transform. A class decorated with @InputType() or @ObjectType().
names: The fields to transform. A potentially optional object containing the names of the fields as key, e.g. { id: 1, name: 1 }. The TypeScript type enforces all values to be 1, but the value isn't actually used. We just need the names as object to determine if a name is included in constant time.
options: The transformation options. An optional object containing any of the following properties:
directives: A boolean that indicates whether to apply directives. By default, false.
Pick(BaseClass, names, [options])
Constructs a type by picking the keys of names from BaseClass.
Omit(BaseClass, names, [options])
Constructs a type by picking all fields from BaseClass and then removing the keys of names.
Partial(BaseClass, [names], [options])
Constructs a type by picking all fields from BaseClass and then setting the keys of names to optional. The opposite of Required. By default, names contains all names.
Required(BaseClass, [names], [options])
Constructs a type by picking all fields from BaseClass and then setting the keys of names to required. The opposite of Partial. By default, names contains all names.