@epicx/express-dry

1.0.9 • Public • Published

Express-Dry

A simple lightweight Express.js Validation Library (With predefined validators [WIP])

How to install

npm install express-dry

or

yarn add express-dry
  • Include in your project Eg. routes/auth.js
const { Router } = require('express')
const dry = require('express-dry')

const router = Router()

router.post('/login', dry.body({
  username: { type: String },
  password: { type: String },
  foo: { type: Boolean, required: false }
}), async (req, res) => {})

module.exports = router

After this the .body will return a middleware with packed automatic validation inside and it will directly return error response to client with a {message: ''} in it

  • Same with params and query
dry.params({ id: { type: Number } }, { allowExtraKeys: false })
dry.query({ search: { type: String, required: false } }, { allowExtraKeys: true, statusCode: 200 })

Complete Example

router.post('/login', dry.body({
  name: { type: String },
  age: { type: Number, min: 18, max: 35 },
  password: { type: String, minLength: 8, maxLength: 20 },
  consent: { type: Boolean, required: false }
}, { allowExtraKeys: false }), async (req, res) => {})

Nest Object Example

Nested objects only supports on dry.body({})

router.post('/test', dry.body({
  name: { type: String },
  infos: {
    manager: { type: String },
    classes: [
      {
        students: [
          {
            name: { type: String },
            roll: { type: Number },
          },
        ],
      },
    ],
  },
}, { allowExtraKeys: false }), async (req, res) => {})

Features

  • All Javascript supported primitives
  • optional payload validation with required: false
  • Will be adding more custom validations such as Email, MongoObjectId and many more :)
  • Nested objects or arrays are also supported

Credits

@uditkarode for drytypes

License

MIT ©Swapnil Soni

Package Sidebar

Install

npm i @epicx/express-dry

Weekly Downloads

0

Version

1.0.9

License

MIT

Unpacked Size

22.3 kB

Total Files

25

Last publish

Collaborators

  • epicx