gnt
Version:
GraphQL Normalized Types
58 lines (48 loc) • 2.63 kB
Markdown
# *G*raphQL *N*ormalized *T*ypes :cocktail:
The **g**in-**n**-**t**onic of GraphQL types: simple, final, clean. Normalize your common data with GraphQL Scalar types.
[](https://github.com/facebook/jest)
[](https://lernajs.io/)
[](#contributing)
## Usage
```bash
$ npm install --save gnt
```
and then add to your schema:
```javascript
const { Phone, UnixDate, CreditCard, State, ZipCode, DriversLicense } = require('gnt')
{
name: 'Query',
fields: {
phone: { type: Phone },
date: { type: UnixDate },
card: { type: CreditCard },
state: { type: State }
zipcode: { type: ZipCode },
license: { type: 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](https://github.com/mfix22/gnt/issues)), but rather by the commuity.
### Creating a new type
First run:
```shell
$ 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!