type-graphql-utils
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

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.

Readme

Keywords

Package Sidebar

Install

npm i type-graphql-utils

Weekly Downloads

682

Version

2.1.0

License

MIT

Unpacked Size

12.4 kB

Total Files

8

Last publish

Collaborators

  • chrislahaye