graphql-extra-scalars
Version:
Collection of extra GraphQL scalar types like Email, URL, Password and more
84 lines (61 loc) • 2.41 kB
Markdown
# GraphQL Extra scalars
[](https://badge.fury.io/js/graphql-extra-scalars) [](https://travis-ci.org/stekycz/graphql-extra-scalars) [](https://david-dm.org/stekycz/graphql-extra-scalars) [](https://david-dm.org/stekycz/graphql-extra-scalars?type=dev) [](https://david-dm.org/stekycz/graphql-extra-scalars?type=peer)
> This is a collection of extra GraphQL scalar types.
## Available Types
Let me give you an overview of the available types. If you need more detail about how to use them, check `tests/schema.js`.
The primitive types, aka everything that may be represented as a string. The ones with parameters you need to instantiate with *new* and pass according parameters, the others may be used as are.
* `GraphQLDateTime`
* `GraphQLEmail`
* `GraphQLIPv4`
* `GraphQLLimitedString(min, max, alphabet)`
* `GraphQLMacAddress`
* `GraphQLPassword(min, max, alphabet, complexity)`
* `GraphQLURL`
* `GraphQLUUID`
`complexity` options:
```javascript
{
alphaNumeric: false,
mixedCase: false,
specialChars: false,
}
```
## Installation
Most likely you already will have it, but do not forget to also install **graphql**, since it is required as peer dependency:
```sh
npm install graphql graphql-extra-scalars --save
```
or
```sh
yarn add graphql graphql-extra-scalars
```
## Usage
Use it in your `GraphQLSchema` as you would use any other type.
```typescript
import {
GraphQLDateTime,
GraphQLEmail,
GraphQLIPv4,
GraphQLLimitedString,
GraphQLMacAddress,
GraphQLPassword,
GraphQLURL,
GraphQLUUID
} from 'graphql-extra-scalars';
import {DocumentNode} from 'graphql';
import {gql} from 'graphql-tag';
const schema: DocumentNode = gql`
scalar DateTime
`;
const resolvers = {
DateTime: GraphQLDateTime,
Password: new GraphQLPassword(8)
};
```
## Development
Contributions are very welcome, please feel free to submit a type. If you do so make sure there are test cases in place.
### Testing
The test suite may be invoked by running:
```sh
npm test
```