Skip to content

ChrisLahaye/type-graphql-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

type-graphql-utils

npm version npm downloads Known Vulnerabilities

This module provides utilities to transform type-graphql types.

Install

yarn install type-graphql-utils

Usage

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published