Skip to content

mfix22/gnt

Repository files navigation

GraphQL Normalized Types 🍸

The gin-n-tonic of GraphQL types: simple, final, clean. Normalize your common data with GraphQL Scalar types.

tested with jest lerna contributions welcome

Usage

$ npm install --save gnt

and then add to your schema:

const { Phone, UnixDate, CreditCard, State, ZipCode, DriversLicense } = require('gnt')
const { makeExecutableSchema } = require('graphql-tools');

makeExecutableSchema({ 
  typeDefs: schemaString, 
  resolvers: {
    Phone,
    UnixDate,
    CreditCard,
    USState: State,
    ZipCode,
    DriversLicense
  }
});

Examples

Each of these types can be installed individually using there 'Package Name' shown below

Type Package Name Input Example Output Example
Phone graphql-types-phone '(817) 569-8900' '+18175698900'
Zipcode graphql-types-zipcode '55902', 00000 '55902', null
UnixDate graphql-types-unix-timestamp 2017-05-07T14:47:59.438, Date 1494186489
CreditCard graphql-types-credit-card '4111111111111111' { number: '4111111111111111', cardType: 'VISA', validCVV: false, validExpiryMonth: false, validExpiryYear: false, isExpired: true }
NonEmptyString graphql-types-non-empty-string '' null
Drivers License graphql-types-drivers-license { state: 'CA', license: 'B2347354' } { state: 'CA', license: 'B2347354' } OR null

Enum Types

Type Package Name Input Example
USState graphql-types-us-state US, CA, DE ...

Contributing

Contributions are more than welcome! This repo is not meant to be owned by me (and if there is a more suitable owner please let me know), but rather by the commuity.

Creating a new type

First run:

$ npm run generate -- '<your type name>'

to get started. A folder with index.js, index.spec.js (your test), and a package.json will be created for you! Then run npm run link and you should be on your way.

If you have any idea for new types, please submit an issue or PR!