gnt

GraphQL Normalized Types 🍸

simple.final.reliable

GraphQL Normalized Types :cocktail:

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

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!

Built with Compositor.io