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.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.1.0
    284
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 2.1.0
    284
  • 2.0.0
    9
  • 1.1.0
    5

Package Sidebar

Install

npm i type-graphql-utils

Weekly Downloads

298

Version

2.1.0

License

MIT

Unpacked Size

12.4 kB

Total Files

8

Last publish

Collaborators

  • chrislahaye