express-dry

A simple express.js lightweight body, params and query validator.

Usage no npm install needed!

<script type="module">
  import expressDry from 'https://cdn.skypack.dev/express-dry';
</script>

README

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) => {})

Features

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

Credits

@uditkarode for drytypes

License

MIT ©Swapnil Soni