This package has been deprecated

Author message:

We're maintaining the package at @wiicamp/graphql-validation

graphql-validation

2.2.2 • Public • Published

graphql-validation

NPM version Minified size License: MIT Dependency Status TravisCI

graphql-validation is a GraphQL middleware that wraps validator.js validator functions.

Table of Contents

Features

  • Based on validator.js
  • Validate both args & input types
  • Easy to use
  • Easy to modularizing
  • Pure javascript

Install

yarn add graphql-validation

or

npm i --save graphql-validation

Usage

Basic

const { validator, validate } = require('graphql-validation'); // Import module
 
const resolver = {
  Mutation: {
    createPost: validator([ // <--- Validate start here
      validate('id').isMongoId(),
      validate('title') // <--- Validate title 
        .isLength({ msg: 'Title is invalid' options: { min: 3, max: 20 } })
        .contains({ msg: 'Title must contains "hi"', options: 'hi' })
        .not().isEmpty({ msg: 'Title is required' }),
      validate('content') // <--- Validate content
        .isLength({ options: { min: 10, max: 20 } }),
    ], (parent, args, context, info) => {
      if (context.validationErrors) {
        // Validate failed
        console.log(context.validationErrors); // Do anything with this errors
        
        return;
      }
    
      // Validate successfully, time to create new post
    }),
  },
};
Input: { id: 'hellomongo', title: '', content: 'Hi!' };
 
// console.log(context.validationErrors);
Output: [
  {
    param: 'id',
    msg: 'MongoId is invalid',
  },
  {
    param: 'title',
    msg: 'Title is invalid',
  },
  {
    param: 'title',
    msg: 'Title must contains \"hi\"',
  },
  {
    param: 'title',
    msg: 'Title is required',
  },
  {
    param: 'content',
    msg: 'Invalid value',
  }
];

Validate Input types

const { validator, validate } = require('graphql-validation'); // Import module
 
const resolver = {
  Mutation: {
    createPost: validator([
      validate('title', 'data') // <--- Validate input types
        .not().isEmpty({ msg: 'Title is required' }), 
      validate('content') // <--- Just validate args
        .isLength({ options: { min: 10, max: 20 } }),
    ], (parent, args, context, info) => {
      if (context.validationErrors) {
        // Validate failed
        console.log(context.validationErrors); // Do anything with this errors
        
        return;
      }
    
      // Validate successfully, time to create new post
    }),
  },
};
Input: { data: { title: '' }, content: 'Hi!' };
 
// console.log(context.validationErrors);
Output: [
  { param: 'title', msg: 'Title is required' },
  { param: 'content', msg: 'Invalid value' },
];

To get started with graphql-validation, you can refer to this example.

API

validator(rules: array, controller: function)

Args Type Default Description
rules Array undefined List of validation's rules. Required.
controller Function undefined Controller of mutation's field. Required.

validate(param: string, input: string)

Args Type Default Description
param String undefined Name of param. Required.
input String undefined Name of input. Options.

Validator functions

Args Type Default Description
config Object { msg: string, options: any } { msg: 'Invalid value' } msg: Custom error message, options: options of validator functions.

Contribution

Contribution are always welcome and recommended! Here is how:

  • Fork the repository (here is the guide).
  • Clone to your machine git clone https://github.com/YOUR_USERNAME/graphql-validation.git
  • Make your changes
  • Create a pull request

License

graphql-validation is released under the MIT license. See LICENSE for details.

Any question or support will welcome.

Package Sidebar

Install

npm i graphql-validation

Weekly Downloads

3

Version

2.2.2

License

MIT

Unpacked Size

12.4 kB

Total Files

9

Last publish

Collaborators

  • thaihv